IDE projelerinden elde ettiğim depozitoma ne eklemeliyim


10

Bu durumda Netbeans'de oluşturulan bir proje eklemek istiyorum, ancak bu soru çoğu IDE için genel. Basitçe, veri havuzuma neleri dahil etmeliyim. Örneğin Netbeans bir nbproject klasörü oluşturur, eclipse bir .settings klasörü vb. Oluşturur. Bunları havuzuma eklemem gerekir, projeye özgü ayarları dahil etmenin veya içermemenin avantajları / dezavantajları nelerdir.

Bu durumda kişisel bir proje, bu yüzden diğer insanların üzerinde çalışmaya başlayacağını düşünmüyorum, ancak projenin kendisinin farklı makinelerde çalışmaya başlaması kolay olacak şekilde minimum proje ayarlarını eklemek güzel olurdu.


Kendi dahil etmek yerine uygun ortamı kurmak için tutulması eklentisi (veya diğer ide) ile maven gibi araçları düşünün .

@MichaelT Çok özür dilerim ama gerçekten takip etmiyorum, bunu genişletmek ister misiniz?
Daniel Figueroa

Bir derleme aracı kullanmak ve derleme aracının ide için ortamı kurması, platformun (veya ide) ne olursa olsun kurulumun aynı olduğundan emin olmanızı sağlar. Solo geliştiricilerin bile çoklu ortamları vardır (ide vs build). Bu, "kod üretildiği için ortamınıza özgü hiçbir şeyi kontrol etmeyin" sorusunu basitleştirir. - jaxb tarafından oluşturulan .java sınıflarını kontrol etmemenizle aynı mantıklı değil, aynı zamanda bunları nasıl oluşturacağınızla ilgili talimatları (build.xml veya .pom dosyası) kontrol etmenizle aynı rasyonel.

"Orijinal" ise yedeklenmelidir. Değişiyorsa ve bunların izlenmesi gerekiyorsa ve orijinalse, revizyon kontrol edilmelidir. Aracı zincir yapılandırmaları kaynak deposunu kirletmezken, repo'yu nasıl yapılandıracağınız kaynak olarak kalır. Aynı görüntü, ses ve video gibi kaynaklar için de geçerlidir ....
mattnz

Yanıtlar:


4

Gerçekten hangi verilere bağlıdır ve duruma göre, hatta tek tek dosyalar için bile karar verilmelidir. Bu dosyaların içeriğine bir göz atın. Ne anlama geldiğini daha sık söyleyemezsiniz. IDE pencerelerinin konumu ve boyutu gibi şeyler, kaynak kontrolünde istemediğiniz bir şeydir.

Ancak bazı IDE proje dosyaları hayati proje meta verileridir. Netbeans'ı iyi bilmiyorum, ancak tutulma için .project dosyası IDE'ye projenin adının ne olduğunu, bir Java web projesi olduğunu vb. Söyler ve .classpath dosyası kaynak klasörler ve kütüphaneler hakkında bilgi içerir. .Settings dizinindeki bazı dosyalar eşit derecede önemli olabilir, örneğin org.eclipse.core.resources.prefs hangi dosyalar için hangi kodlamanın kullanılması gerektiği hakkında bilgi içerir.

Proje meta verileri olarak, bu şeyler kaynak kontrolünde sürümlendirmeyi hak eder.

Bazı IDE'ler proje meta verilerini diğer IDE'lerden alabilir. Belirli bir IDE'ye bağlı olmayan bir formda olması daha iyi olurdu.

Java için böyle bir şey var: Maven . Projenin yapısı üzerinde güçlü kurallar uygular ve proje meta verilerini (kütüphane bağımlılıkları gibi) bir noktada (projenin ana dizininde ve elbette kaynak kontrolünde bulunan pom.xml adlı bir dosya) belirtmenize olanak tanır. Daha sonra Maven yapılandırmasından IDE proje dosyaları oluşturan eklentiler ve proje oluşturma işlemini otomatikleştirebilen veya hemen hemen her şeyi yapabilen diğerleri vardır. Bazen işleri gereksiz yere karmaşık hale getirir ve öğrenmesi biraz zaman alır, ancak faydaları genellikle buna değer.


1
yanılmıyorsam Maven IDE'den bağımsızdır. Eğer öyleyse, o zaman, proje ayarlarını / meta verilerini içerdiğinden, kesinlikle repoyu içermelidir, ancak OP'nin özellikle söz ettiği gibi "IDE proje dosyalarını" içermemelidir.
Kanama Parmakları

@ hus787: benim açımdan, bu meta verilerin repoda olacak kadar çok önemli olduğu ve IDE'den bağımsız bir formda olduğunuzda harika olsa da, durum böyle olmadığında, sahip olmak.
Michael Borgwardt

2

Bu gerçekten de depoda ne tür bilgilere sahip olmak istediğinize bağlıdır. Taahhüt sırasında açtığınız ve düzenlediğiniz dosyalara kadar her şeyi istiyorsanız ve depoyu kullanan tek kişi sizseniz, devam edin ve hepsini taahhüt edin, ancak başka bir makinede çalışmayabileceğini bilin .

Kodunuzu aynı IDE'yi kullanmayan diğer kişilerle paylaşmak istiyorsanız, projeye özel bir uygulama olmadan kodun kendisini taahhüt edin.

Herkesin aynı IDE'yi kullandığını biliyorsanız, muhtemelen bilgisayara özgü olmayan her şeyi, yani yalnızca IDE'nin kendisi için herhangi bir ayar dosyası / klasörü ekleyebilirsiniz, böylece projeyi zaten IDE bunu bekliyor.


2

Geliştirmenize yardımcı olan ve derleme / sürüm veya projenin kendisi için yararlı olmayan eserler dahil edilmemelidir . Repo temiz ve düzenli olmalı ve sadece çevrenizle değil projeyle ilgili olan şeylere sahip olmalıdır . Repo alışkanlıklarınızı bilmemelidir. İkincisi, buna benzer bir şey yaptığınızda gereksiz yere sizi rahatsız edecektir git status... ama hey hiç değişiklik yapmadım ... ahh bunu görmezden gelin.

Daha pratik bir örnek vereyim ( gitburada bir araç olarak kullanacağım ):

Asla, ana deponuzdaki (özyinelemeli) bir alt modülün IDE'ye özgü bir şeyler olmasını istemezsiniz (ana proje ortamını da etkileyebilir) çünkü tek düşündüğünüz başka biri (veya siz) tarafından yazılan koddur ve mevcut proje içinde kullanım. Geliştirildiği ortam değil. Muhtemelen başka birine de yapmak istemezsiniz.

Ayarınızı farklı bir makinede kullanabilmek için IDE'nizi kazmanızı ve bu tür şeyler için hangi desteği sağladığını görmenizi öneririm. Emacs initve Emacs sunucusu da var. Veya .shkurulumu otomatik olarak yapan özel makronuzu veya komut dosyanızı ( ) yapabilirsiniz.


-1: tamamen katılmıyorum. Bu çok önemli ve yararlı bir bilgi olabilir ve repo kesinlikle bu bilgileri içermelidir .
Michael Borgwardt

@MichaelBorgwardt, OP daha sonra başka bir IDE'ye geçmeyi planlıyorsa. Bu proje IDE'ye özgü ayarlar diğerinde nasıl anlaşılacak? Bir örnek çok takdir edilecektir.
Kanama Parmakları

Bazı IDE'ler proje meta verilerini diğer IDE'lerden alabilir. Yapamasalar bile, bu dosyalar genellikle insan tarafından okunabilir ve sahip olmaktan daha iyidir.
Michael Borgwardt

Ve çalışma alanınızı (son zamanlarda başıma) tamamen eğirirseniz ve işleri daha önce düşündüğünüz şekilde manuel olarak ayarlayarak değişiklikleri tersine çeviremezseniz ne olur? Muhtemelen kendimi saatler kurtardım çünkü çalışma alanı kontrol edildi. Bazı IDE'lerde çalışma alanının, her zaman manuel olarak ayarlanması gereken büyük bir acı olacak kod şablonları gibi şeyler içereceğinden bahsetmiyorum.
Amy Blankenship

@AmyBlankenship bu benim çalışma alanım, diğerinize müdahale etmediğinden nasıl emin olabilirsiniz (çeker ve aniden çalışma alanının yerine sizinki gelir), bu şeyleri ayrı bir yerel dalda tutmak daha iyidir veya kişisel projeye özgü VC çalışma alanınız için mercurial ve VC projesi için git kullanabilirsiniz. Kod şablonları hakkında, IDE'nizin yeterince olgun olmadığını (veya henüz doğru bir şekilde araştırılmadığını) düşünüyorum ve şablonlar projenize özel söylüyorsanız, kodunuzdaki desenleri aramalısınız.
Kanama Parmakları

1

Kişisel bir proje ise, ayarları kaynak kontrolünde sakla diyorum. Şahsen, hiçbir şey bir proje için motivasyonumu tekrar geliştirme ortamı oluşturmaktan daha fazla öldürmez.

Daha fazla insan dahil olduğunda, bunları kaynak kontrolüne sokmuyorum. Ekibimde, kullanılan IntelliJ, Sublime Text ve Eclipse'nin bir karışımı var. IDE dosyaları sadece dağınıklık ekler ve kullanmadığınız bir IDE için bu dosyalardan başkalarının taahhütlerini almanıza neden olur.

Ayrıca, projeniz yine de IDE'ye bağımlı olmamalıdır. Bir yapı sunucusu ürününüzü derlemek için Eclipse'i önyüklemeyecektir, bu nedenle zaten IDE içermemelidir. Daha küçük bir nokta: proje içindeki kişisel organizasyonu ortadan kaldırır. Örneğin, IntelliJ'de projemizde birçok modül kullanmayı seviyorum. IntelliJ kullanan başka hiç kimse bu konuda endişelenmiyor çünkü .iml (module) dosyalarını saklamıyoruz.

Ekibiniz aynı IDE'yi kullanıyorsa, o zaman daha iyidir, ancak biri mutlak bir yol kullandıkları için kötü bir .classpath girişi yapar. Şimdi IDE kullanan herkes bunun için endişeleniyor.

Tabii ki, dezavantajı, birisi projeyi kontrol ettiğinde daha fazla kurulum olması. Bence buna değer. Ivy'yi bağımlılık yönetimi için kullanıyoruz ve kurulum, bağımlılıklar vb. Hakkında bilgi sahibiyiz.

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.