Ekibimizdeki herkes IntelliJ IDEA kullanıyor ve derleme yapılandırmalarını, ayarları ve denetimleri paylaşabilmemiz için proje dosyalarını (.ipr ve .iml) kaynak kontrolüne almanın yararlı olduğunu düşünüyoruz. Ayrıca, bu inceleme ayarlarını TeamCity ile sürekli entegrasyon sunucumuzda kullanabiliriz. (Kaynak kontrolünde değil, .gitignore dosyasında kullanıcı başına çalışma alanı .iws dosyasına sahibiz.)
Ancak, IDEA'da hemen hemen her şeyi yaptığınızda bu dosyalar küçük şekillerde değişir. IDEA'nın sorun veritabanında bir sorun var ( IDEA-64312 ), bu yüzden belki de IDEA'da bir hata olarak düşünülebilir, ancak öngörülebilir gelecek için birlikte yaşamamız gerekecek.
Yakın zamana kadar Subversion kullanıyorduk, ancak yakın zamanda Git'e geçtik. Her biri, görmezden geldiğimiz ve başkalarıyla paylaşmak istediğimiz proje dosyası değişiklikleri olmadıkça teslim etmediğimiz proje dosyalarının değişiklik listesine sahip olmaya alıştık. Ancak Git ile, gerçek güç (keşfettiğimiz şeyden) teşvik ettiği sürekli dallanma gibi görünüyor ve dallar arasında geçiş, her zaman değiştirilen proje dosyalarıyla bir acıdır. Genellikle değişiklikler bir şekilde birleştirilebilir ve şimdi yeni şubeye uygulanmakta olan proje dosyası değişiklikleriyle uğraşmaya çalışır. Ancak, yeni şube proje dosyalarını değiştirdiyse (şube henüz diğer şubelerde olmayan yeni bir modül üzerinde çalışıyorsa) git sadece yapmadığı bir hata atar ' t Hem şube hem de yerel olarak değişiklikleriniz olduğunda dosyalarda birleştirmek için herhangi bir anlam ifade etmeyin ve ben onun amacını anlayabiliyorum. Komut satırından, "git checkout" komutundaki "-f" komutunu yerel değişiklikleri atmaya ve dalın yerine kullanmaya zorlamak için kullanılabilir, ancak (1) IDEA'daki Git Checkout GUI komutu (10.5.1) bulabileceğimiz bir seçenek olarak görünmüyor, bu yüzden komut satırına düzenli olarak geçmemiz gerekecek ve (2) Bunu kullanma alışkanlığımızda olmak istediğimizden emin değiliz bayrak ve Git'e yerel değişikliklerimizi atmasını söyler.
Yani, bununla başa çıkmak zorunda olduğumuz seçenekler hakkında bazı düşüncelerimiz var:
- Proje dosyalarını tamamen kaynak denetiminden çıkarın. Onları .gitignore'a koyun ve belki başka bir yolla veya başka isimler altında kaynak kontrolüne koyarak başka bir yolla her bir kişiye ve TeamCity'ye dağıtın. Ekibimiz yeterince küçük bu seçenek göz önünde bulundurulması mümkün, ancak harika görünmüyor.
- Belirli bir zamanda hangi dallarda hangi dosyalara sahip olduğumuzu yönetmeye çalışarak, onunla yaşamaya devam edin. Bunun bir parçası olarak, her geliştiriciyi sistemlerindeki her projenin birden fazla kopyasına sahip olmaya teşvik edebiliriz, böylece her biri muhtemelen farklı proje dosyaları kümeleriyle farklı bir şubeye teslim edilebilir.
- Kaynak denetiminde değil, modül (.iml) dosyaları ve .gitignore dosyasında sadece proje (.ipr) olmasını deneyin. Düzenli olarak .ipr'de kendi kendine dolaşan ana şey, paylaşılan derleme yapılandırmalarının sırasıdır, ancak belki bunları nasıl kuracağımızla ilgili bilgileri ayrı olarak paylaşabiliriz. IDEA'nın özellikle yeni bir kasada, dosyalarından bazılarına sahip olmanın nasıl bir şeyle uğraştığından emin değilim.
Sanırım kaçırdığımız bazı bariz (veya aşikar olmayan) bir çözüm olduğunu umuyorum, belki de Git ve IDEA'nın sahip olduğu büyük özelleştirilebilirlikle ilgileniyorlar. Ama öyle görünüyor ki, bu sorunu yaşayan tek ekip biz olamayız. Stack Overflow'da benzer olan sorular 3495191 , 1000512 ve 3873872'yi içerir , ancak tam olarak aynı sorun oldukları için bilmiyorum ve belki birileri çeşitli yaklaşımlar için artıları ve eksileri ile gelebilir ana hatlarıyla, bu soruların cevaplarında listelenen yaklaşımlar veya önerdikleri yaklaşımlar.