Proje dosyalarımı sürüm kontrolü altında tutmalı mıyım? [kapalı]


87

Eclipse'in .project, .classpath, .settings gibi proje dosyalarını sürüm kontrolü altında tutmalı mıyım (örn. Subversion, GitHub, CVS, Mercurial, vb.)?



12
Çok yapıcı
QED

Yanıtlar:


93

Herhangi bir taşınabilir ayar dosyasını sürüm kontrolünde tutmak istiyorsunuz ,
yani:
Mutlak yolu olmayan herhangi bir dosya.
Şunları içerir:

  • .project,
  • .classpath ( mutlak yol kullanılmamışsa , bu IDE değişkenlerinin veya kullanıcı ortam değişkenlerinin kullanımıyla mümkündür)
  • IDE ayarları ('kabul edildi' cevabına kesinlikle katılmadığım yer). Bu ayarlar genellikle, bu projeyi kendi çalışma alanına yükleyen herhangi bir kullanıcı için tutarlı bir şekilde uygulanması hayati önem taşıyan statik kod analizi kurallarını içerir .
  • IDE'ye özgü ayar önerileri büyük bir README dosyasına yazılmalıdır (ve tabii ki sürümü de).

Benim için temel kural:
Bir projeyi bir çalışma alanına yükleyebilmeli ve IDE'nizde doğru şekilde kurmak ve dakikalar içinde çalışmaya başlamak için ihtiyacınız olan her şeye sahip olmalısınız.
Ek belge, okunacak wiki sayfası yok.
Yükleyin, kurun, gidin.


@Rich: teşekkür ederim. Diğer okuyucular için, Rich'in aynı soruya bir yıl sonraki cevabına bakın: stackoverflow.com/questions/1429125/…
VonC

3
anahtar aşaması "... dakikalar içinde
başlayalım

3
Yani, VC deposu her IDE için yapılandırma dosyalarına sahip olmalıdır? NetBeans, Eclipse, Emacs, vi, başka ne varsa? Bu dosyaların, geliştiricinin kendi IDE'lerini kurmaktan sorumlu olması gerektiği fikrine özellikle katılmıyorum.
RHSeeger

3
@RH - "... kendi IDE'lerini kurmaktan sorumlu olmalıdır". Bazı palyaço, Eclipse kod stili özelliklerini ayarlamayı unutana ve içlerinde TAB bulunan kaynak dosyalarını kontrol edene kadar sorun değil. Grrrr !!
Stephen C

2
Ben de katılmıyorum - eğer CI, çoklu sürümler, platformlar, IDE'ler vb. Kullanıyorsanız, bu DRY'yi oldukça kötü bir şekilde bozar. Esp. çünkü farklı eklentilerin / ayarların burada neyin sona ereceği üzerinde büyük bir etkisi vardır.
jayshao

30

.project ve .classpath dosyaları evet. Ancak IDE ayarlarımızı sürüm kontrolünde tutmuyoruz. Kalıcı ayarlarda iyi bir iş çıkarmayan bazı eklentiler var ve bazı ayarların bir dev makineden diğerine çok taşınabilir olmadığını gördük. Bunun yerine, bir geliştiricinin IDE'sini kurması için gereken adımları vurgulayan bir Wiki sayfamız var.


2
-1 Binlerce insanın zamanını boşa harcamalarına izin vermek yerine, bu eklentiler için hata raporları sunmayı öneririm. Ve sonra, tüm kararlı ayar dosyalarını sürüm kontrolü altına alır ve o Wiki sayfasını çıplak kemiklere kadar keserdim.
Aaron Digulla

18

Bunlar, oluşturulmuş dosyalar olarak düşündüğüm şeylerdir ve bu nedenle onları asla sürüm kontrolü altına koymam. Makineden makineye ve geliştiriciden geliştiriciye farklı olabilirler, örneğin insanlar farklı Eclipse eklentilerine sahip olduğunda.

Bunun yerine, yeni bir teslim aldığınızda bu dosyaların ilk sürümlerini oluşturabilen bir derleme aracı (Maven) kullanıyorum.


Kesin olarak: mvn eclipse: eclipse, uygun bir .classpath ve .project oluşturacaktır. -DownloadSources = true ve -DdownloadJavadocs = true iletebilirsiniz.
Aleksandar Dimitrov

Ayrıca, her zaman kaynakları ve javadoc'u indirmek için pom'unuzdaki tutulma eklentisini yapılandırabilirsiniz.
Chris Vest

1
-1 Bu, IDE'nizdeki proje ayarlarını değiştirmediğiniz sürece çalışır. Ve tehlike şudur: Eğer onları değiştirirseniz, dosyaların versiyonlarına sahip olmadığı için fark etmezsiniz. Bu yüzden bunu reddetmek için çok cazip hissediyorum. Bunu yalnızca, kimseyle paylaşmak istemedikleriniz gibi gerçekten basit projeler için yapın. Bir takımda, varsayılanlar genellikle çalışmaz ve her geliştiriciden kurulumunu değiştirmesini istemek, kaos için kesin bir reçetedir.
Aaron Digulla

Aaron, IDE'nizdeki proje dosyalarını değiştirseniz bile bu işe yarar. Bundan sonra olan şey, değişikliklerinizi şüphesiz ekibinize zorlamamanızdır. IDE projeleri, herkes için işe yaramayacak makine ve geliştiriciye özel bilgiler içermeye eğilimlidir. Ne kadar çok eklenti kullanırsanız ve IDE kullanımınız ne kadar karmaşık olursa, bunun o kadar kötüleştiğini görüyorum. İnsanlar, araçlarının nasıl çalıştığını bilmeli ve yapılandırmaları üzerinde kontrol sahibi olmalıdır. Ben bunu , ancak, bu yaklaşım sorunları kendi seti olmadan olmadığını kabul edersiniz.
Chris Vest

Ayrıca, bu dosyaları anlamsız bir şekilde düzenleyen eklentilerin neden olduğu birleştirme çakışmalarını düzeltmek oldukça hızlı eskimektedir.
Chris Vest

7

Burada iki seçenek arasında kaldım.

Bir yandan, tüm kaynak yapıları sürüm kontrolünde depolandığı ve derleme komut dosyasının (örneğin ANT veya Maven) standartlara uyumu sağladığı sürece, herkesin en üretken oldukları geliştirme araçlarını kullanmakta özgür olması gerektiğini düşünüyorum. tam olarak hangi JDK'nın kullanılacağını, hangi üçüncü taraf kitaplıklarının hangi sürümlere bağlı olacağını, stil kontrollerinin çalıştırılmasını (örneğin kontrol stili) ve birim testlerinin çalıştırılması vb.

Öte yandan, pek çok insanın aynı araçları kullandığını düşünüyorum (örn. Eclipse) ve genellikle bazı şeylerin geliştirme zamanı yerine tasarım zamanında standartlaştırılması çok daha iyidir - örneğin Checkstyle bir Eclipse eklentisi olarak olduğundan çok daha kullanışlıdır. bir ANT veya Maven görevi - geliştirme araçları seti ve ortak bir eklenti seti üzerinde standartlaştırmanın daha iyi olduğu.

Herkesin tam olarak aynı JDK'yı, Maven'in aynı sürümünü, Eclipse'in aynı sürümünü, aynı Eclipse eklentileri setini ve aynı yapılandırma dosyalarını (örn. Checkstyle profilleri, kod biçimlendirici kuralları vb.) Kullandığı bir proje üzerinde çalıştım. Bunların tümü kaynak kontrolünde tutuldu - .project, .classpath ve .settings klasöründeki her şey. İnsanların sürekli olarak bağımlılıkları veya inşa sürecini değiştirdiği projenin ilk aşamalarında hayatı gerçekten kolaylaştırdı. Projeye yeni başlayanlar eklerken de çok yardımcı oldu.

Öte yandan, dini bir savaş için çok fazla şansı yoksa, temel geliştirme araçları ve eklentileri setini standartlaştırmanız ve derleme komut dosyalarınızda sürüm uyumluluğunu sağlamanız gerektiğini düşünüyorum (örneğin, Java sürümünü açıkça belirterek). JDK ve Eclipse kurulumunu kaynak kontrolünde depolamanın pek bir faydası olduğunu düşünmeyin. Türetilmiş bir yapı olmayan her şey - proje dosyalarınız, konfigürasyonunuz ve eklenti tercihleriniz (özellikle kod formatlayıcı ve stil kuralları) dahil - kaynak kontrolüne gitmelidir.

PS Maven kullanıyorsanız, .project ve .classpath dosyalarının türetilmiş yapılar olduğunu söyleyen bir argüman vardır. Bu, yalnızca bir yapı oluşturduğunuzda bunları oluşturuyorsanız ve bunları POM'dan oluşturduktan sonra elle değiştirmek zorunda kalmadıysanız (veya bazı tercihleri ​​değiştirerek yanlışlıkla değiştirmediyseniz) doğrudur.


6

Hayır, çünkü sadece yazılımı oluşturmak için gerekli olan kontrol dosyalarının sürümünü kullanıyorum. Ayrıca, bireysel geliştiricilerin kendi projeye özel ayarları olabilir.


5

Hayır, yoğun bir Maven kullanıcısıyım ve .project ve .classpath'i oluşturan ve güncel tutan Q for Eclipse eklentisini kullanıyorum. Eklenti ayarları gibi diğer şeyler için genellikle bununla ilgili bir README veya Wiki sayfası hazırlarım.

Ayrıca diğer IDE'leri tercih eden birlikte çalıştığım kişiler, IDE'lerini (ve kendilerini) mutlu etmek için gereken dosyaları oluşturmak için sadece Maven eklentilerini kullanıyor.


5

Sanırım bu tamamen fikirdir - ancak yıllar içindeki en iyi uygulamalar, kuruluşunuzun tamamı tek bir IDE'de standartlaştırılmadıkça ve hiçbir zaman geçiş yapma niyetiniz olmadıkça, belirli bir IDE'ye özgü dosyaların kaynak kontrolünde depolanmaması gerektiğini gösterir.

Her iki durumda da, kesinlikle kullanıcı ayarlarının saklanmasını istemezsiniz - ve .project gerçekten geliştiriciye özel ayarlar içerebilir.

Standart bir yapı sistemi olarak Maven veya Ant gibi bir şey kullanmanızı öneririm. Herhangi bir geliştirici, IDE'lerinde yapılandırılmış bir sınıf yolunu birkaç saniye içinde alabilir.


1

Evet, .settings klasörü dışında. Diğer dosyaları işlemek bizim için iyi sonuç verir. Burada benzer bir soru var .


1

Genel olarak "oluşturulan dosyaların sürümlerini çıkarma" yaklaşımını kabul etsem de, bununla ilgili sorunlarımız var ve geri dönmemiz gerekiyor.

Not: VonC'nin yanıtı , özellikle "Eclipse'i dakikalar içinde ayağa kaldır" noktasıyla da ilgileniyorum . Ama bizim için belirleyici değil.

Bağlamımız m2eclipse eklentisini kullanan Eclipse + Maven'dir. Mümkün olduğunca ortak dizinlerle ortak bir geliştirme ortamına sahibiz. Ancak bazen birileri bir eklenti dener veya yapılandırmadaki küçük şeyleri değiştirir veya farklı bir şube için ikinci bir çalışma alanını içe aktarır ...

Bizim sorunumuz, .project'in oluşturulmasının Eclipse'de bir proje içe aktarılırken yapılması, ancak daha sonra her durumda güncellenmemesidir . Bu üzücü ve m2eclipse eklentisi gelişeceği için muhtemelen kalıcı değil, ama şu anda doğru. Böylece farklı konfigürasyonlara sahip oluyoruz. Bugün sahip olduğumuz şey şuydu: Bazı makinelerde birçok projeye birkaç doğa eklenmiş ve bunlar daha sonra çok farklı davranmıştır :-(

Gördüğümüz tek çözüm, .project dosyasını sürümlemektir (riskleri önlemek için, aynısını .classpath ve .settings için de yapacağız). Bu şekilde, bir geliştirici pom'unu değiştirdiğinde, yerel dosyalar m2eclipse kullanılarak güncellenir, hepsi birlikte işlenir ve diğer geliştiriciler tüm değişiklikleri görür.

Not: Bizim durumumuzda göreceli dosya adları kullanıyoruz, bu nedenle bu dosyaları paylaşmakta sorun yaşamıyoruz.

Yani, sorunuzu cevaplamak için, evet diyorum, bu dosyaları işleyin.


Ben de begendim:


"... m2eclipse kullanarak ponponunu değiştirir ..."? M2eclipse'in pom dosyasıyla ne ilgisi var? Kesinlikle kullanıyor, ancak pom'daki değişiklikler eklentiden bağımsız olmalıdır.
RHSeeger

@RHSeeger Teşekkürler, cevabımın bu bölümünde netliği artıracağım.
KLE

0

Bir proje üzerinde çalışırken bu proje dosyaları zamanla değişebilir gibi görünüyor, bu yüzden evet, onları sürüm kontrolü altına alıyorum.



0

IntelliJ IDEA kullanıyoruz ve proje (.ipr) ve modül (.iml) dosyalarının '.sample' sürümlerini sürüm kontrolü altında tutuyoruz.

Burada biraz daha önemli olan şey paylaşmak ve yeniden kullanmaktırIMHO, sürümlemeden . Ama bu konfigürasyonları paylaşacaksanız, onları depodan daha iyi bir yer, diğer her şeyin hemen yanında.

Paylaşılan ve sürümü belirlenmiş proje dosyalarının bazı avantajları:

  • Herhangi bir etiketi / dalı kontrol edebilir ve üzerinde hızla çalışmaya başlayabilirsiniz.
  • Yeni bir geliştiricinin ilk olarak geliştirme ortamını kurmasını ve hızlanmasını kolaylaştırır
  • Bu, her zaman son derece tatmin edici olan DRY'ye daha iyi yapışır. Bundan önce, tüm geliştiricilerin bunları arada bir ayarlamaları gerekiyordu, esasen tekrarlanan işler yapıyorlardı. Elbette herkesin kendini tekrar etmekten kaçınmak için kendi küçük yolları vardı, ancak takıma bir bütün olarak bakıldığında, çok fazla yinelenen çaba vardı.

IDEA'da bu dosyaların aşağıdaki gibi yapılandırmaları içerdiğini unutmayın: "kaynak" ve "test kaynağı" dizinleri nelerdir; dış bağımlılıklar hakkında her şey (kitaplık kavanozlarının yanı sıra ilgili kaynaklar veya javadoc'ların bulunduğu yerler); oluşturma seçenekleri, vb Bu vermez şeyler değil geliştirici geliştirici değişir (I katılmıyorum bu oldukça kuvvetli). IDEA, herhangi bir eklenti yapılandırmasının yanı sıra başka yerlerde daha fazla kişisel IDE ayarı saklar. (Eclipse'i o kadar iyi bilmiyorum; bu oldukça farklı olabilir veya olmayabilir.)

Bu cevaba katılıyorum :

Bir projeyi bir çalışma alanına yükleyebilmeli ve IDE'nizde doğru şekilde kurmak ve dakikalar içinde çalışmaya başlamak için ihtiyacınız olan her şeye sahip olmalısınız. [...] Yükleyin, kurun, gidin.

Ve versiyonlanmış proje dosyaları sayesinde buna sahibiz.

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.