Android Studio - Tüm .idea dizini git yoksayılmalı mı?


137

AndroidStudio.gitignore dosyaları için birçok örnek gördüm , bazılarında var , bazıları yok..idea

.İdea dizininin tamamını .gitignore'a eklememek için iyi bir neden var mı?

Tamamen göz ardı edilmemesi gerekiyorsa, .idea (.iml gibi) içinde .gitignore içinde olması gereken belirli dosyalar var mı?


.ideaBazı dosyalar dışında görmezden geliyorum .idea/runConfigurations/.
Daniel

Yanıtlar:


104

Bu sayfaya bir göz atabilirsiniz:

Proje yapılandırma dosyaları hakkında IntelliJ doc

"Dizin tabanlı formatta" belirli bir satır ilginçtir:

.İdea dizini bir dizi yapılandırma dosyası (.xml) içerir. Her dosya bir dosya adı yansıyan bir belirli işlevsel alanına ait yapılandırma verileri sadece bir kısmını içerir, örneğin, compiler.xml, encodings.xml, modules.xml.

Dosyaların neredeyse tamamı, bileşen modüllerinin adları ve konumları, derleyici ayarları vb. Gibi projenin kendisinin bilgi çekirdeğini içerir. Bu nedenle, bu dosyalar sürüm kontrolü altında tutulabilir (ve olmalıdır).

Ancak, proje IDE bağımlı yapmak için düzgün nefret ediyorum (Şu anda NetBeans ile yapılan bir proje üzerinde çalışıyorum ve şirketimin standardı haline gelen Eclipse ile kullanmak acıyor).

Sorunuzu cevaplamak için:

  1. Eğer yoksa kullanmayın bağımlılıkları ve yapı yönetmek için Maven veya Gradle gibi bir şey: sürüm kontrolü altında dizini tutmak . Bu şekilde, projenin doğru şekilde yapılandırılması ve bağımlılıklar herkes için kullanılabilir olacaktır. Karşı tarafta, tüm geliştiricilerin ortamlarını tam olarak yapılandırma dosyalarında tanımladığınız şekilde ayarlamaları gerekir.
  2. Eğer varsa kullanım yapmak Maven veya Gradle gibi bir şey: Doğru bu araçları yapılandırmak ve sürüm kontrolü altında dizin tutmuyorum . Aslında tüm bilgiler içerdiği iç yapılandırma dosyaları edilmelidir Maven'in / Gradle dosyalarında depolanır. Ardından geliştiricilerinizin ortamlarına bağlı olarak IDE'lerini yapılandırmasına izin verin. Bu şekilde, Eclipse, IntelliJ, Linux, Windows ... artık sorun olmayacak.

9
Ancak bir sonraki paragrafa dikkat edin: "İstisna, çalışma alanı.xml dosyasıdır. Kişisel ayarlarınızı saklar ... Bu nedenle, bu dosyayı iş arkadaşlarınızla paylaşmak istemezsiniz."
Dalbergia

40

Tamam, bazı "Evet" ve "Hayır" yanıtlarından sonra, "Evet ve hayır" yanıtı ekliyorum :)

Sorun, .ideahem proje derleme yapılandırması (bağımlılık bildirimi) hem de proje ayarları (denetimler vb.) İçin kullanılmasıdır.

IDE'nizi yapı yapılandırmanız için kesinlikle kullanmak istemezsiniz, ancak ayarları ekip arasında paylaşmak isteyebilirsiniz. Yalnızca görmezden bir parçası gerekir nedeni budur .idea(gibi içerik librariesklasörü ve modules.xmldosyası) fakat sürüm kontrolü diğerlerini tutmak (örneğin copyright, dictionariesve inspectionProfilesklasörler ve dosyalar altında .ideagibi dynamic.xml, codeStyleSettings.xmlvs.).


İml dosyalarını nasıl spesifik olarak ele alır?
dors

1
iml dosyaları kesinlikle göz ardı edilmelidir.
JBaruch

1
Hala yapılandırmaların IDE'ye bağlı dosyalarda saklanmaması gerektiğini ve Maven / Gradle'ın bunu yapmak için çok daha iyi olduğunu düşünüyorum.
mithrop

mithrop şey - Maven / Gradle dosyasında bu tür bir yapılandırma bildiremezsiniz. Fikrin kendine özgü biçimi ve Maven / Gradle'da taşınabilir alternatifleri yok.
JBaruch

Ah evet, haklısın. Her neyse, maven / gradle dosyalarına koyamazsanız, projeyi bir dahaki sefere başka bir IDE'ye aktardığınızda bir sorun yaşayacaksınız (işleyemekten nefret ediyorum sorun). Ama sana tamamen katılıyorum (cevabımı
okursam

7

Proje konfigürasyonunu VC'de tutma kavramı geçerlidir. Bunu ekibimle birlikte yaptım çünkü tüm geliştiricilerimiz projelerimiz için PHPStorm'u kullandılar ve bu nedenle ortak bir konfigürasyonun konseptte kalması mantıklıydı. Aynı sözlük dosyalarını, aynı kodlama standart kurallarını ve aynı eklenti yapılandırmalarını kullanmak istedik.

Bunu "kavram olarak" nitelememin nedeni, JetBrains'in .idea klasöründe, onu kullanamamıza yol açan sorunlar olmasıydı. Bunlar muhtemelen önlenebilecek veya düzeltilebilecek sorunlardı, ancak bunun nasıl doğru yapılacağı bizim için belirsizdi ve bunun JetBrains'in bir hatası olduğunu düşünüyoruz, çünkü geliştiriciler olarak nasıl yapılacağı konusunda çözüm aramak için zamanımız veya isteğimiz yok IDE'miz doğru çalışıyor.

Bununla birlikte, yaşanan sorunlar şunlardır:

  • Symlinking proje klasörleri düzgün çalışmıyor. Projelerimi oluşturduğumda, bunları ana dizinime bağlarım. Keşfettiğimiz şey, projenin somut bir dizin gibi davranmak yerine tam symlink'i kullanacak şekilde ayarlanmış olmasıydı. Bu, başka bir geliştirici projesini farklı bir yerde tutarsa ​​veya yalnızca sembolik bağlantıları kullanmazsa, kelimenin tam anlamıyla sembolik bağlantıyı aradığı için tüm dizinin proje gezgininde bulunmayacağı anlamına gelir. Daha da kötüsü, yapılandırmada bu yol değerini asla bulamadım. .İdea klasörümüzü oluşturan dosyalarda tam yapılandırmayı bulamadık.
  • Tanım dosyaları varsayılan olarak kullanıcılara bölünmüştür. Bu, sözlüğüme bir kelime eklemek istersem, benim için bir tanım olarak listelenecek, jgreathouse, ancak diğer kullanıcıların kendi tanım bölümleri olacak. İşaretli kelimeler diğer kullanıcılar için yazım hatası olarak görünmeye devam edecektir. Bu arzu edilemez. Tanım dosyama eklememin nedeni, IDE'nin yanlış olması. Bu tanımların diğer kullanıcılarla sezgisel olarak paylaşılmasını istiyorum.
  • Meslektaşlar IDE'leri şu anda Bellek'teki yapılandırmalarıyla yapılandırmaların üzerine yazacağı için yapılandırmaların üzerine yazmaya devam ettiler. Demek istediğim, bir geliştiricinin IDE değiştirme yapılandırmaları yerine bir proje yapılandırma değişikliği içerecek ve hatta bir seçenek sunan bir depoyu çalışacak ve depolarını orijinden birleştirecek ve .idea yapılandırmasının üzerine otomatik olarak IDE'lerinin geçerli bellek içi yapılandırması. Bence bu .idea yapılandırmasını paylaşılan bir yapılandırma olarak kullanılamaz hale getiriyor. Bu sorunu çözmek için, geliştirici tam anlamıyla IDE'lerinin bu örneğini kapatmalı, repoyu çekmeli ve IDE'lerini tekrar açmalıdır. IDE, o anda bellekte olan yapılandırma ile anında üzerine yazılırsa, paylaşılan bir yapılandırmanın tutulması mantıklı değildir. O'

Daha önce Visual Studio ve Netbeans ile VC'de paylaşılan bu tür IDE yapılandırmalarını yaptım ve her zaman iyiydi; ama .idea ile hayal kırıklığı yaratan sadece kullanılamaz hisseder. Keşke JetBrains bunun üstesinden gelip daha iyi bir kullanıcı deneyimi sunabilseydi.


> IDE değiştirme yapılandırmaları yerine, hatta onlara bir seçenek vermek yerine, .idea yapılandırmasının IDE'lerinin geçerli bellek içi yapılandırmasıyla otomatik olarak üzerine yazılır. Vay be, bu gerçekten talihsiz. Bunu bildiğim iyi oldu!
Greg Price
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.