Hangi Eclipse dosyaları sürüm kontrolü altındadır?


242

Hangi Eclipse dosyalarının, kaynakların dışında açıkça kontrol altına alınması uygundur?

Projemde özellikle merak ediyorum:

.metadata / *
proje-dir / .project
proje-dir / .classpath
proje-dir / .settings / *

Bunlardan hangisine bağlı olduğu varsa, lütfen yönergelerinizi açıklayın.

Yanıtlar:


175

Meta veriler kaynak kontrolünde yönetilmemelidir. Bunlar çoğunlukla çalışma alanınızla ilgili veriler içerir .

Tek istisna .launchXML dosyalarıdır (başlatıcı tanımı).

İçinde bulunurlar

[eclipse-workspace]\.metadata\.plugins\org.eclipse.debug.core\.launches

Ve bunlar proje dizininize kopyalanmalıdır: Projeniz yenilendiğinde, bu yapılandırmalar "Yapılandırmayı çalıştır" iletişim kutusunda görüntülenir.

Bu şekilde, bu başlatma parametresi dosyaları da SCM'ye yönetilebilir.

(Uyarı: Do seçeneği işaretini "ilişkili kaynak silinir Sil konfigürasyonları" in Çalıştır / başlatma / Başlatma Yapılandırma tercihi paneline: Bu yaygındır geri tekrar içe amacıyla bir proje yumuşak silme - bir yeniden başlatma zorlamak için tutulma meta verileri. Ancak bu seçenek işaretlenirse ayrıntılı başlatma parametrelerinizi kaldıracaktır!)

project-dir/.project
project-dir/.classpath
project-dir/.settings/* 

senin SCM (özellikle olmalı .projectve .classpathuygun Eclipse belgelerinde ).

Amaç, herkesin SCM çalışma alanını kontrol edebilir / güncelleyebilir ve Eclipse projesini Eclipse çalışma alanına aktarabilir.

Bunun için bağlantılı kaynakları kullanarak .classpath dosyanızda yalnızca göreli yolları kullanmak istersiniz .

Not: project-direclipse çalışma alanının altında oluşturulan bir dizine değil, "harici" bir proje dizinine başvurmak daha iyidir . Bu şekilde, iki kavram (tutulma çalışma alanı ve SCM çalışma alanı) açıkça ayrılır.


Gibi ipsquiggle yorumunda bahseder ve ima gibi eski bir cevap olarak, aslında fırlatma yapılandırmasını kaydedebilirsiniz dosyayı paylaşılan proje dizininde doğrudan. Tüm başlatma yapılandırması daha sonra diğer proje dosyaları gibi sürümlendirilebilir.

(Blog gönderisinden İpucu: KD'den Başlatma Yapılandırmaları Oluşturma ve Paylaşma )

alternatif metin


16
.Launch dosyaları için .metadata'daki herhangi bir şeyle çalışmak için (IMO) çok daha iyi bir iş akışı şöyledir: bir başlatma yapılandırmasını düzenlerken, commonsekmede öğesini seçin Save as > shared file. Bu doğrudan proje klasörüne düşer, böylece projenin geri kalanıyla SCM olabilir.
Ipsquiggle

3
.Project neden SCM'de olmalıdır? Örneğin, etkinleştirildiğinde .project öğesinde değişikliklere neden olan bir kod metrik aracı kullanmak istiyorum. Bunu projenin tüm kullanıcıları için zorlamak istemem.
jfritz42

8
@ jfritz42: yalnızca sizin için geçerli olan yerel ve dakik bir değişiklik yaparsanız, bu sürümün .projectyalnızca çalışma alanınız için yok sayılmasını sağlayın. Ancak sadece Eclipse çalışma alanlarına hızlı bir şekilde içe aktarabilecekleri ortak Eclipse proje tanımının diğer tüm kullanıcılarını mahrum bırakmayın, çünkü sadece o andaki ihtiyacınıza uygun bir ekstra tanımınız var.
VonC

7
Teşekkür ederim. Bu bağlantıları dikkatlice inceleyeceğim, ancak zaten bağlantılarınızın ilkinde bir cevabın "Kesinlikle evet" başladığını, bir sonraki yanıtın da "Kesinlikle hayır" başladığını fark ettim. Google çeşitli, acemi dostu olmayan tavsiyelerle doludur. Hedefi anlıyorum, ama sorun nasıl çözülecek. Kaynak ve kullanıcı seçeneklerinin Xcode tarafından oluşturulan ve derleyici tarafından üretilen çıktıdan temiz bir şekilde ayrıldığı Xcode'dan geliyorum, böylece bu sorunun basit bir cevabı var. Eclipse newbie'ye göre, bu dosyalar birbirine karışmış ve dağılmış gibi görünüyor. Basit bir anlaşılır
cevap

3
VisualStudio ülkesinden geliyorum ve ikinci @garyp burada - bu gerçekten sıcak bir karışıklık - Eclipse'in geçici ve / veya izlemesi gerekmeyen kullanıcı dosyaları yapması gerekiyorsa, bunları başka bir yere koymalı, böylece proje ve yapı tanımları izlenebilir ve tüm geçici çöpler engellenmez. Eclipse ekibinden bir yerlerde daha resmi bir rehberlik yok mu? (Tutulma ekibinin birim testi yapmadığı açıktır [veya eğer yaparlarsa, etkili bir şekilde yapmazlar] ama en azından bana kaynak kontrolü kullandıklarını söyleyin! XD)
BrainSlugs83

19

Şu anda kaynak kontrolü altında .project ve .cproject dosyaları bulunan bir proje üzerinde çalışıyorum. Fikir, kütüphane yolları ve bağlantı direktifleriyle ilgili ayarların ekip boyunca yayılmasıydı.

Uygulamada çok iyi çalışmadı, birleşmeler hemen hemen her zaman tutulmanın dışında dekondanse edilmesi gereken çatışan bir duruma geri döndü ve daha sonra proje değişikliklerin yürürlüğe girmesi için kapatıldı ve yeniden açıldı.

Onları kaynak kontrolünde tutmanızı tavsiye etmem.


14

CDT yapılandırma dosyalarının kaynak kontrolü dostu olmadığı hiçbir şeye değmez . .Cproject dosyaları için çok sık değişen ve çakışmalara neden olan bir hata var, bkz. CDt-proje dosyalarını depoda paylaşma her zaman çakışmalara neden oluyor .


Yikes - bu hata altı yaşında ve hala dokunulmamış. Açıkça kaynak kontrol desteği Eclipse ekibi için bir öncelik değildir!
BrainSlugs83

2
Ayrıca, .cproject dosyasının, diğer geliştiricileri el ile yeniden oluşturmaya zorlamak istemediğiniz yapılandırma bilgilerini içerdiğine dikkat edilmelidir. Ugh.
Christopher Barber

7

Maven kullananlar gibi bazı projeler POM'lara dayalı .project dosyaları oluşturmayı sever.

Bununla birlikte, --metadata kaynak kontrolünde OLMAMALIDIR dedi. Projeniz, standartları nasıl yönetmeyi planladığınıza bağlı olarak projectdir / .settings'in yapılıp yapılmayacağına dair bir belirleme yapmak zorunda kalacaktır. Geliştiricilerinizin ortamını standarda göre kurmaları için dürüstçe güvenebilirseniz ve herhangi bir proje için özel bir şey özelleştirmek zorunda kalmazsanız, onları yerleştirmeniz gerekmez. Ben, her projeyi özel olarak yapılandırmanızı öneririm . Bu, geliştiricilerin varsayılan ayarları ileri ve geri değiştirmek zorunda kalmadan aynı çalışma alanındaki birden çok projenin çalışması üzerinde çalışmasına olanak tanır ve ayarları çok açık hale getirir ve varsayılan ayarlarının proje standartlarına uygun olmasını geçersiz kılar.

Sadece zor kısmı hepsinin senkronize kalmasını sağlamaktır. Ancak çoğu durumda .settings dosyalarını projeden projeye kopyalayabilirsiniz. Özellikle kaynak kontrolünde istemediğiniz herhangi bir şey varsa, SCM'niz destekliyorsa, svn: ignore ayarını eşdeğer yapın.


2
Maven 1 ve 2'yi kullanıyoruz ve yalnızca .project dosyasını sorarsanız oluşturur. Ve bunu yapsanız bile, POM'un içeriğine göre bunu yapar, bu yüzden başka bir geliştirici sizin için bu adımı daha önce yapmışsa ve sonucu sürüm kontrolüne kontrol ettiyse, neden bundan yararlanmıyorsunuz?
Andrew Swan

6

.Classpath dosyası el ile ayarlamak çok iş olabilir ve yeni geliştiricilerin projeye girmek için zor olacağından scm'yi kontrol etmek için kesinlikle iyi bir adaydır. Diğer kaynaklardan oluşturulabileceği doğrudur, bu durumda diğer kaynağı kontrol edersiniz.

.Settings'e gelince, ayarlara bağlıdır. Bu gri bir alandır, ancak bazı ayarlar neredeyse zorunludur ve bir projeyi kontrol etmek, Eclipse'e aktarmak ve her şeyin hazır ve iyi gitmesini sağlamak uygundur.

Bu nedenle projemizde CVS.settings adlı .settings klasörünün bir kopyasını tutuyoruz ve .settings'e kopyalamak için bir karınca görevimiz var. Projeyi CVS'den aldığınızda, varsayılan ayarları yeni .settings klasörüne kopyalamak için 'eclipsify' ant görevini çağırırsınız. Projede geliştiren herkesin ihtiyaç duyduğu ayarları yapılandırdığınızda, bunları tekrar CVS.settings klasöründe birleştirir ve CVS'ye taahhüt edersiniz. Bu şekilde ayarları SCM'ye kaydetmek bilinçli bir işlem haline gelir. Devs, zaman zaman büyük değişiklikler kontrol edildiğinde bu ayarları .settings klasörlerinde birleştirmeyi gerektirir. Ancak şaşırtıcı derecede iyi çalışan basit bir sistemdir.


4

Hiçbirini söylemem. Büyük olasılıkla sadece iş istasyonunuzla ilgili bilgiler içerirler (kütüphanelerin ve hepsinin yollarını düşünüyorum). Ayrıca ekibinizdeki bir kişi Eclipse kullanmıyorsa?


3
Hayır, .classpath yolunuzda göreli yollara sahip olabilirsiniz. Bkz. Stackoverflow.com/questions/300328#300346 .
VonC

7
Aynı cihazı kullanmıyorlarsa oldukça tutarsız / verimsiz bir takım gibi görünüyor. araçlar, proje, hata ayıklama ve derleme tanımları vb. - Sonra bana ortak bir kodlama standardı veya JDK kullanmamamı söyleyeceksiniz. - İdeal olarak, bir kullanıcı bir projeyi kaynak kontrolünden aşağı çekebilmeli ve çok fazla ek kurulum veya talimat olmadan doğrudan içeri girebilmelidir. Yani bu cevap benim için kabul edilemez.
BrainSlugs83

1
Birleştirme sırasında tercih dosyalarındaki çatışmalarla başa çıkmak çok daha verimsizdir, çünkü biri projeyi yeni bir çalışma alanından açtığı için - bu büyük projelerde bir kabus. Ayrıca, aynı IDE'yi aynı yapılandırma ile kullanmaya zorlamak gereksiz bir kısıtlama gibi geliyor.
A.Rodas

[~ Agnul] 'a katılıyorum. Projeler bir derleme aracı (gradle, maven, ant, vb ...) kullanıyor olmalı ve IDE projeyi derleme aracı yapılandırma dosyasından (build.gradle, pom.xml, build.xml, vb ...) Hiçbir IDE dosyası sürüm kontrollü olmamalıdır. Bunların hepsi projeye özgü dosyalar değil, geliştiriciye özgü dosyalardır. Bunlar basitçe sürüm kontrolüne ait değildir.
axiopisty

2

Düşünmek:

.classpath
.project
.launch

Projeye bağlı yolları kullanmaya devam ettiğiniz sürece bunlar sürüm kontrolünde olmalıdır. Bu, diğer geliştiricilerin projeyi kontrol etmelerine ve diğer geliştiricilerin de yaşadığı tüm kurulum acılarından geçmek zorunda kalmadan çalışmaya başlamasına izin verir.

Eclipse geliştiricilerinin tüm çalışma alanını kontrol edebilmesi ve tüm doğru projelerle önceden yapılandırılmasını sağlamak için .metadata'yı sürüm kontrolüne dahil etmek cazip gelebilir, ancak herhangi bir zamanda üzerinde çalıştığı birçok kullanıcıya özel bilgi içerir, değiştirmek, bu yüzden .metadata DAHİL DEĞİL tavsiye ederim. Mevcut tüm Eclipse projelerini içe aktararak yerel bir çalışma alanı oluşturmak kolaydır.


Benim tecrübelerime göre, Eclipse'i daha yeni bir sürüme güncellediğinizde veya tatlar arasında geçiş yaptığınızda bu çeşitli şekillerde kırılma eğilimindedir.
Thorbjørn Ravn Andersen

1

Yeni meslektaşlar (ve ben) için tutulma çalışma alanı ayarlarını yapılandırmak için çok fazla zaman harcadım. Sonunda yaptığım şey, kendi .metadata'mı yeni geliştirici makinesine kopyalamaktı.

Eğer bir takım üzerinde çalışıyorsanız, bence aşağıdakiler sürüm kontrolü altında tutmak için çok iyi adaylardır:

  • Yüklü JRE'ler ve adları
  • Sunucu Çalışma Zamanı Ortamları
  • Java Editör Şablonları
  • Sürüm Kontrolü Klavye Kısayolları
  • Projeye özgü ayarlar sağlamayan eklenti ayarları
  • Maven ayarları
  • Önceden Konfigüre Edilmiş Perspektifler
  • ...
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.