En iyi SVN uygulamaları - bir ekipte çalışmak


98

SVN ile başlıyorum. Temel komutları biliyorum ve temel ilkeleri anlıyorum. Bir ekip ortamında Subversion ile çalışmak için herhangi bir ipucu veya en iyi uygulama olup olmadığını merak ediyordum.

Kodu işlerken makul ölçüde ayrıntılı mesajlar eklemenin faydasını görebiliyorum, ancak aklımda tutmam gereken başka şeyler var mı?

Tüm harika cevaplar için teşekkürler - çok yardımcı oldular.

Yanıtlar:


76

Sık taahhütleri teşvik edin. Sürüm kontrolüne yeni başlayan takım arkadaşları, kodu "düzgün çalışana kadar" havuzun dışında tutmaları gerektiğini hissedebilirler. Herkese erken ve sıklıkla sorunları mümkün olan en kısa sürede bulmayı öğretin. Kodu işe yarayana kadar tutmak yerine, ekip arkadaşlarınızın gövdeyi kırabilecek özellikler için dallar oluşturmasını önerin. Şuna gider...

Dallara ayırma ve etiketleme uygulaması oluşturun. Özelliklere yönelik dallara ek olarak, ekip arkadaşlarınızı büyük hata düzeltmeleri için dalları kullanmaya teşvik edin. Çalışmanın başında ve sonunda önemli hata düzeltmelerini etiketleyin. Üretim / qa sürümleri için etiketleri (ve muhtemelen dalları) koruyun.

Gövde için bir politika belirleyin ve ona bağlı kalın. Bir örnek, "gövde her zaman hatasız inşa edilmelidir" olabilir. veya "gövde her zaman tüm birim testlerini geçmelidir". Henüz gövde standartlarını karşılamayan herhangi bir iş bir şubede yapılmalıdır.


1
dallanma ve birleşme SVN'de bir acıdır. Diğer VCS'ler bunu çok daha iyi halleder, ancak SVN için dal ağırlıklı bir süreci asla savunmam.
Branan

7
@Branan YANLIŞ. çünkü kaynak kontrolünü doğru şekilde nasıl kullanacağınızı bilmiyorsunuz. Branşlara ayrıldığınızda, iyi bir geliştirici olarak işinizi yapmanız ve şubenizi ana hattan GÜNCELLEMeniz ve en son değişiklikleri ana hattan şubenize GÜNLÜK veya günde birkaç kez (sizin seçiminiz) birleştirmeniz beklenir, böylece sonunda yapmazsınız yığılmış cehennemi birleştirme var. Bilgisayarımda her zaman yerel olarak en az 4-5 şubem var ve bu kabustan ASLA bahsediyorum çünkü bunu doğru yapıyorum ... insanların bagaja kontrol ettiği değişiklikleri yapabilmek için sık sık güncelliyoruz ve ile ilişkili olarak çalışma ve kod ekleme
PositiveGuy

66

Kod değişiklikleriyle biçimlendirme değişiklikleri yapmayın

Devasa bir dosyanın boş alanını yeniden yapılandırmak istiyorsanız ( Control+ K+D ) , sorun yok. Biçimlendirme değişikliğini gerçek mantıksal değişiklikten ayrı olarak gerçekleştirin. Dosyalarda işlevleri taşımak istiyorsanız da aynı şey geçerli. Taşıma işlemini gerçek düzenlemeden ayrı olarak gerçekleştirin.


2
bu yüzden tüm gün bir dosyayı düzenlerim ve şimdi onu işleme zamanı, biçimlendirmeyi nasıl ayırabilirim?
Dustin Getz

23
Mevcut kodla biçimlendirme değişiklikleri yapacaksanız, önce yapın, kesin, ardından yeni kodu ekleyin / kodu düzenleyin. Veya önce ekleyin / düzenleyin, kesin, ardından biçimlendirme değişikliğini yapın. Bu şekilde, ekle / düzenlemedeki fark aslında mantıklıdır ve sadece "şimdi her şey farklı!"
Demez.

1
+1. Gereksiz değişiklikler, ilgili değişiklikleri gözden geçirmek için gereken çabayı artırır. Ayrıca değişiklikleri birleştirmeyi / bağlantı noktasını (örneğin, farklı bir dal) zorlaştırır.
Ateş Goral

2
Bu izlenecek iyi bir uygulama olsa da, kimsenin bunu uygulayabileceğini sanmıyorum. Jason haklı, iyi bir geliştirici, gürültüyü filtrelemek için iyi bir fark aracı (kaplumbağa SVN'ye yerleştirilmiştir) ile beyaz boşlukları görmezden gelebileceklerini anlayacaktır.
Ken Sykora

1
Bu, ekip üyelerine kod incelemeleri ve eğitim yoluyla uygulanabilir. Mantıksal değişiklikleri kod değişikliklerinden ayırmanın gözden geçirenin yükü olması gerektiğini düşünmüyorum. Uygulayıcının sorumluluğu olmalıdır.
Marquez

43

Her zaman bağlı kaldığım temel kavramlardan biri, ilgili kod değişikliklerini birlikte uygulamaktır . Sonuç , aynı işlemede ilgisiz kod değişikliklerini işlememektir . Bu, bir işlemede 2 hatayı düzeltmeyin (aynı düzeltme olmadığı sürece) ve 2 işlemin her birinde yarım hata düzeltmesi yapmayın. Ayrıca, sistemin ilgisiz bir bölümüne yeni bir geliştirme veya başka bir iş için ihtiyaç duyduğum bir şey eklemem gerekirse, geliştirmeyi ayrı olarak (ve önce) yaparım. Buradaki fikir, herhangi birinin kendi başına sahip olmak isteyebileceği (veya kendi başına geri döneceği) herhangi bir değişikliğin ayrı bir taahhüt olması gerektiğidir. Birleştirme yapma veya bozuk özellikleri geri alma zamanı geldiğinde sizi tonlarca baş ağrısından kurtaracaktır.


4
Buna +1. Taahhüt ettiğin zaman çok büyük bir acı gibi görünüyor. Ancak atomik taahhütlerle dolu bir depo, eski kodu incelerken paha biçilemez.
Gordon Wilson

2
bir özellik dalı bunun için değil ... özellik dalında gerektiği kadar çok kaydetme yapın, sonra hazır olduğunuzda bunu gövde ile birleştirin ... geri alma yalnızca birleştirilmiş kaydetmeyi kaldırmak anlamına gelir. İlgili kodu bir arada tutmak için +1 ...
farinspace

16

Zaten çok şey bahsedildi ve işte biraz daha:

  1. Kaynak kontrolünde istemediğiniz dosyalarınız varsa (ör. Yapılandırma, derlenmiş dosyalar, vb.), Bunları yok sayma listesine ekleyin . Bu şekilde, eklemeyi unuttuğunuz dosyaları, her zaman SVN tarafından bilinmeyen olarak gösterilen boş bir dosya listesi bekleyerek fark edersiniz.

  2. Taahhüt edilen değişiklikle ve ideal olarak bunun için yama ile ilgili olarak geliştirici posta listenize (veya bu hedef için belirli bir e-posta) gönderecek bir post commit etkinliği ekleyin .

  3. Hata izleyicinizle entegre edin, böylece taahhütlere referanslar, farklara bağlantılarla hatalar / özellik isteklerinde gösterilir. MantisBT gibi hata izleyiciler bunu destekliyor.

  4. Sürekli entegrasyon (örneğin CruiseControl.NET ), NAnt for Build ve birim testleri için NUnit / VS ile entegre etmeyi düşünün . Bu şekilde, bir kullanıcı kodu kontrol ettiğinde veya programlanmış bir aralıkta kod derlendiğinde, birim testleri çalıştırılır ve geliştirici işlemle ilgili geri bildirim alır. Bu aynı zamanda havuzun kırılması (yani oluşturulmaması) durumunda ekibin geri kalanını da uyarır.


Bizim kullandığımız uygulama, tüm yapılandırma dosyalarının config.php.config gibi uzantıları değiştirmiş olması veya bunun gibi bir şey olmasıdır. Yapılandırma dosyasında, svn sürümünden kopya yaptığımızdan daha büyük bir değişiklik olduğunda ...
zidane

15

Temel bilgiler:

  • Bir sürümde QA'ya başlamadan önce etiketler oluşturun
  • Riskli değişikliklerden önce etiketler oluşturun (ör. Büyük yeniden düzenleyiciler)
  • Kodu dondurmak için yayınlanan sürümler için şubeler oluşturun.
  • Bir kod parçası üzerinde çalışmaya başlamadan önce insanların güncelleme yapmaları gerektiğini bildiklerinden emin olun ve bunu taahhüt etmeden önce bir kez daha güncelleme yapın.
  • SVN, aynı dosyanın farklı kullanıcılar tarafından birden çok teslim alınmasına izin verir. Ortaya çıkabilecek herhangi bir çatışmayı herkesin çözdüğünden emin olun.
  • Asla birden fazla kullanıcı için aynı SVN hesabını kullanmayın. Korkunç şeyler sonuçlanabilir.

7
Dallarım ve etiketlerimle tam tersini yapıyorum. Dallar, sonunda gövdeyle birleşen bagajdan çatallar içindir. Etiketler kod donmaları içindir.
steve_c

1
Dallar, değişebilen kopyalardır. Etiketler değiştirilmemesi gereken kopyalardır. svnbook.red-bean.com/en/1.2/svn.branchmerge.tags.html
matpie

Ben de benzer bir şey yapıyorum. Kodu QA veya üretim için yayınladığımda etiketleyip şubelere ayırıyorum. Bu şekilde, bagajda meydana gelebilecek yeni özellik geliştirmeyi etkilemeyecek olan bu sürüm için hata düzeltmelerini ele almak için salt okunur bir işaretleyicimiz ve bir dalımız var.
JamesEggers

Svn, aynı kullanıcı için aynı klasörün birden çok teslim alınmasına da izin verir. Dolayısıyla, mevcut işinizle ilgisi olmayan bir değişiklik yapmanız gerektiğini fark ederseniz (örneğin, bir acil durum düzeltmesi için arayan bir müşteri veya tesadüfen tamamen ilgisiz bir hata bulursanız) tekrar kontrol edin ve ayrı olarak düzeltin.
PMF

Kod donmaları için "etiketler" kullanılmalıdır. "Etiket" dalını değiştirmeye çalışırsanız, SVN istemciniz sizi uyarır.
Danijel

12

İnsanların verdiği cevaplar harika. Bunun çoğu, SVN için en iyi uygulamalar için svn kullanıcı belgesinde özetlenmiştir .
Tekrarlamak için:

  1. Depo yapınızı ayarlayın (altında gövde, dallar ve etiketler bulunan proje köküne sahip olmalısınız)
  2. Politikanızı dallara ayırmayı seçin (özel şubeler, kilometre taşı / sürüm / hata başına dallar, vb.) Ve buna bağlı kalın - daha az yerine daha fazla dallanma öneririm, ancak özel şubelere gerek yok
  3. Politikanızı yeniden etiketlemeyi seçin - ne kadar çok etiket o kadar iyidir, ancak en önemlisi etiket adlandırma kurallarınıza karar verin
  4. Politikanızı bagaja yeniden taahhütte bulunun - bagajı olabildiğince "temiz" tutun, herhangi bir zamanda serbest bırakılabilir olmalıdır

Bu oldukça eski bir en iyi uygulama, bu yüzden CollabNet'in artık onları tavsiye ettiğini düşünmüyorum. Mevcut yeni en iyi uygulamalar var mı? Bahsettiğiniz kişi SVN 1.0'a geri dönüyor
mliebelt

1
@mliebelt - Apache sürümüne olan bağlantıyı güncelledim. Yaşa bakılmaksızın, repo yapınızı seçme fikirleri, dallanma politikalarınız, etiketleme politikalarınız ve ana hat taahhüt politikalarınız ve yukarıdaki gerçekten iyi cevaplar hala sağlamdır.
hromanko

Bu "Şube Gerektiğinde Sistem" açıklaması oldukça çılgınca. Ofis çekimi için bir tarif gibi geliyor.
naught101

10

Bağlı olduğum en iyi uygulamaları şu şekilde özetlemek isterim:

  1. İkili dosyalar işlemeyin . Nexus , Ivy veya Artifactory gibi ikili dosyalar için ayrı bir havuz olmalıdır .
  2. Depo yapısı olmalıdır . Şahsen aşağıdaki depo yapısını kullanıyorum:

    /trunk
    /tags
        /builds
            /PA
            /A
            /B
        /releases
            /AR
            /BR
            /RC
            /ST
    /branches
        /experimental
        /maintenance
            /versions
            /platforms
        /releases
    
  3. Özel şube türleri listesi kullanın . Listem şu şekildedir: deneysel , bakım , sürümler , platformlar , sürümler .
  4. Belirli etiket türlerini kullanın : PA(alfa öncesi), A(alfa), B(beta), AR(alfa sürümü), BR(beta sürümü), RC(sürüm adayı), ST(kararlı).
  5. Birleştirme gerekliliğini en aza indirin . Birleştirme mümkün olduğunda / teşvik edildiğinde ve olmadığında kurallar olmalıdır.
  6. Sürüm numaralandırması . Bağlı kalınması gereken yerleşik bir sürüm numaralandırma yaklaşımı olmalıdır. Genellikle Yazılım Yapılandırma Yönetim Planı gibi bir belgede açıklanır, üst düzey proje belgelerinin bir parçasıdır. Kişisel olarak karmaşık sürüm numaralandırma yaklaşımını kullanıyorum. Bu yaklaşıma göre, sürümler şu modellere sahiptir: Nxx (bakım / destek dalları), NMx (sürüm dalı), NxK (derleme), NMK (sürüm).
  7. Mümkün olduğunca sık taahhütte bulunun . Zor olma eğilimindeyse (örneğin, özelliği uygulamak ve hatta kodu derlemek için çok fazla değişiklik yapılması gerektiğinde), deneysel dallar kullanılmalıdır.
  8. Gövde en son gelişmeyi içermelidir . Örneğin, uygulamanın yeni ana sürümünün ( Nxx ) nerede geliştirileceğine dair bir seçim olduğunda , ana hatta veya dalda, karar her zaman ana hat lehine verilmelidir . Eski sürüm, bakım / destek dalına ayrılmalıdır . Büyük sürümler arasında net bir ayrım olduğunu ve bunların özelliklerinin (mimari, uyumluluk) mümkün olduğu kadar erken ortaya çıktığını varsayar .
  9. Sürüm dalları hakkında katı 'derlemeyi bozmayın' ilkesi . Bu arada, çözülmesi için birleştirme sorunlarına ihtiyaç duyan deneysel geliştirmeye veya kod tabanına sahip olabileceği sürece ana hat için kesin olması gerekmez .
  10. Svn: externals kullanın . Projenizi modülerleştirmenize, şeffaf sürüm yönetimi prosedürü oluşturmanıza, farklı işlevleri bölmenize ve ele geçirmenize olanak tanır.
  11. Sorun izlemeyi kullanın . Kaydetme mesajının içindeki sorun referansını gösterebileceksiniz.
  12. Boş kaydetme mesajlarını devre dışı bırakın . Pre-commit kancaları kullanılarak yapılabilir.
  13. Sürekli entegre etmek istediğiniz dalları tanımlayın . Örneğin , ana hat , bakım ve sürüm için sürekli entegrasyonu kullanmayı tercih ediyorum dalları .
  14. Kurmak sürekli entegrasyon politikasını dallarının farklı türleri için. Daha önce de belirttiğim gibi, dalları serbest bırakmak için çoğu katı "yapıyı bozmayın" kuralları uygulanırken , ana hat ve bakım dalları bazen bozulabilir. Ayrıca ana hat / bakım ve serbest bırakma dallarında çalıştırılan denetimler listesi arasında da fark vardır .

En iyi yıkım uygulamalarımın ana hatlarını, kullandığım yazılım konfigürasyon yönetimi yaklaşımının ana ilkelerini gösteren şema şeklinde bulabilirsiniz .


Peki takımda nasıl çalışıyorsun? Farklı insanlar farklı şubeler kullanıyor mu? Çatışmalardan nasıl kaçınılır? Yanıtınız ekip çalışmasını kapsamaz :(
DataGreed

2
S: Çatışmalardan nasıl kaçınılır? C: birleştirilmesi gereğini en aza indirin , Trunk son gelişmeyi içermelidir , mümkün olduğunca sık olarak Commit : Q Do farklı insanlar farklı dalları kullanılır? C: Her şube bir veya daha fazla kişi tarafından kullanılabilir. Dal türlerini ayırt etmek de önemlidir: deneysel, bakım ve yayın, çatışmaların önlenmesine yardımcı olur S: Cevap, ekip çalışmasını kapsamaz A: İlk bakışta görünebilir. Sürüm kontrolünü kullanmak otomatik olarak ekip çalışması anlamına gelir. Daha da etkili bir şekilde işbirliği yapmaya yardımcı olan kurallar dizisini (yolun kuralları olarak) tanımladım
alternatif

7

Çok yararlı bulduğum bir şey svn: external property, yani diğer depolardan kendi dizinlerine de başvurabilirsiniz. Kodunuzu ve verilerinizi düzenlemenin gerçekten güzel yollarını sunar. Bazı örnekler:

  1. Farklı modülleri / kitaplıkları kodlamak için ayrı bir havuzunuz varsa ve kullandıklarınıza referans verin. Bu, her yürütülebilir dosya için bir meta depoya sahip olabileceğiniz anlamına gelir. Yalnızca birkaç modül kullanan küçük bir yürütülebilir dosyaysa, tüm ağacı kullanıma almanıza gerek kalmaz. Bunun bir etkisi, modül başına SVN revizyon numaralarını almanızdır.
  2. Kitaplıkların derlenmiş sürümleri gibi büyük ikili verileri kod havuzuna eklemek genellikle kötü bir alışkanlık olarak kabul edilir, ancak gerçekten kullanışlı olabilir. Kullandığınız tüm kitaplıkların tüm sürümlerini farklı bir depoya eklerseniz, iki dünyanın en iyisini elde edebilirsiniz. Kod deponuza kullandığınız kitaplıkların sürümlerinde başvurursunuz. Kod deponuzu kontrol ederken hem kodu hem de ikili dosyaları alacaksınız. Ancak ikili dosyalar, kaynak kodunuz kadar titiz bir şekilde yedeklemeniz gerekmeyen büyük bir havuzda depolanır ve kaynak kod deposu küçük kalır ve yalnızca metin içerir.

1
2. maddeyi seviyorum. Svn: external kullanırken bir revizyon numarası belirleyip belirtemeyeceğiniz için, bu, bazı kitaplıkları belirli sürümlere "sabitlemenize" ve diğerlerinin en son sürümü "izlemesine" izin verir.
j_random_hacker

"Svn: external" kullanmak en güçlü olanlardan biridir ve SVN'nin çoğu temel özelliğini söyleyebilirim. Bu bir zorunluluktur.
Danijel

5

Hata izleme yazılımınızla entegrasyonu kullanın. Eğer kullanırsanız Bugzilla yorumunuz "Bug XXXX" SVN açıklamaya otomatik olarak bu değişikliğin SVN web arayüzü size bir bağlantısı da dahil verilen hatadan bir yorum olarak eklenir ile başlıyorsa, bunu o kadar ayarlayabilirsiniz.


Trac, hata izleme, artı zaman çizelgesi, farklılıkları kaydetme, wiki vb. İçin iyi bir svn entegrasyonuna sahiptir.
Doug Currie

Jira ayrıca sorunlarla ilgili taahhütleri de takip ediyor
Dan Soap

4

SVN'nin dallanma ve birleştirme araçları ve kuralları hakkında bilgi edinin.

Diğer ekip üyeleriyle çalışmanın en iyi yolu, çalışmayı eksiksiz geliştirme özelliklerine / düzeltmelerine ayırmak, ardından her biri bir dalda bireysel değişiklikler üzerinde çalışmaktır. Ardından, tamamlandığında / birleştirilmek üzere hazır olduğunda / onaylandığında değişiklikleri ana hat dalına / ana hatla birleştirin.

Bu şekilde bireyler, diğer değişikliklerle çarpışmadan ortak bir hedef için (aynı dalda veya ayrı dallarda) çalışabilirler.

Kilometreniz değişebilir ve bu sadece iki veya daha fazla kişi için aşırı olabilir.


3

SVN ile iyi entegre olan iyi araçlar kullanıyorsanız, bu çok daha kolay hale gelir. Bunlar, nelerin değiştirildiğini görmenizi ve ardından değişikliklerinizin tamamını veya bir kısmını gerçekleştirmenizi ve çalışma kopyanızı SVN'deki en son sürüme sık sık güncellemenizi kolaylaştırır.

Tortoise SVN (Windows kullanıyorsanız) ve Visual SVN'yi öneririm (VS kullanıyorsanız) .

Ayrıca, herhangi bir değişiklik yapıldığında e-posta veya benzer bir bildirim alacak şekilde ayarlayıp ayarlayamayacağınıza bakın (genellikle ayrıca commit mesajı ve değiştirilen dosyaların bir listesi dahil). CVSDude gibi hizmetler bunu sunar. Çalışma kopyamı güncellemeden önce hem bir güncellemenin yapıldığını bilmek hem de bu güncellemede neler olduğuna dair bir fikir sahibi olmak bana yardımcı oluyor.


3

Dallanma politikalarının yanı sıra ve diğerleri. (tek bir boyut kesinlikle herkese uymadığında), iyi taahhütlere sahip olmalısınız:

  • Taahhüt, tek bir bir iş parçasıyla ; bir hata düzeltmesi, yeni bir özellik - yaptığınız değişikliklerin bir 'mantığı' olmalıdır
  • Kayıt, arşiv geçmişine göz atarken bulmanıza yardımcı olacak açıklayıcı bir yoruma sahip olmalıdır. Çoğu kişi, başlangıçta tüm commit'i ve aşağıda daha ayrıntılı bir hesabı açıklayan tek bir cümle yazmayı önerir.
  • Mümkünse, taahhüdü mümkünse hata izleme sisteminize bağlamalısınız. Trac, Redmine ve diğerleri. böceklerden taahhütlere ve tam tersine bağlantılar oluşturmanıza izin verir, bu da çok kullanışlı olur.


2

Herhangi bir birleştirme çakışmasını düzeltmeden önce, değişiklikleri hakkında ekibinize danışın veya en azından farka çok dikkatli bakın. Eklemelerinin birleştirme sırasında kaybolmadığından emin olmak için birleştirilmiş kodu kendilerinin gözden geçirmelerini isteyin.


2

Bozuk taahhütleri azaltan gördüğüm bir şey, iyi pre-commit komut dosyalarına sahip olmaktır. Örneğin, değişiklik yapılmadan önce herhangi bir birim testi çalıştırabilirsiniz. Bu, taahhütlerin biraz yavaş olmasına neden olur, ancak birinin ayak parmaklarına basmaktan ve özür dilemek zorunda kalmadan zaman kazanırsınız. Elbette, büyük bir geliştirme ekibiniz ve çok sık taahhütleriniz olduğunda bunu yönetmek çok daha zor hale geliyor.


Ön işleme komut dosyaları için +1. İyi fikir. Eğer onu çalıştırmadan taahhütte bulunmaya çalışırsanız, git'in size elinizi uzatmanın bir yolu var mı acaba?
naught101

2

Hata izleyici ve commit politikası uygulama ile entegrasyon örneklerinden biri Trac'ın svn pre / post-commit kanca betikleri olabilir; bu komut dosyaları, commit mesajı hata izleyicideki herhangi bir bileti referans almıyorsa ve mevcut mesaj içeriğine dayalı biletler (yani taahhüt mesajı "Düzeltme # 1, # 2 ve # 8" gibi bir şey içerebilir, burada # 1, # 2, # 8 bilet numaralarıdır).


2

SVN'yi kullanmak için en iyi uygulama :

  1. Eclipse projenizi ilk kez ofise geldiğinizde ve açtığınızda , yapılması gereken ilk adım projenizi güncellemektir.

  2. Güncellemeyi aldıktan sonra işinize başlayın. Kodlamanızı bitirdiğinizde, uygulamanızın istisnasız düzgün çalışıp çalışmadığını kontrol edin. Kodunuzun iyi çalıştığından emin olduktan sonra, kodu işleme zamanı.

Not: Kodu işlerken doğrudan kaydetmeyin. Sunucu ile bir senkronizasyon yapın ve nelerin yapılması gerektiğini kontrol edin. Not: Tüm klasörü bir kez kaydetmeyin. Çünkü gereksiniminiz için dosyada bazı değişiklikler yapmış olabilirsiniz veya yerel sisteminizdeki bazı dosyaları silmiş olabilirsiniz. Ancak sunucuda ayarlar farklıdır. Bu yüzden dosyaları ayrı ayrı kontrol edin ve kodu işleyin.

  1. Çatışma dosyalarını doğrudan işlemeyin / güncellemeyin.

  2. Geçersiz kılma ve güncelleme ne zaman yapılmalı?

    Yerel değişikliklerinizin hiçbirine ihtiyacınız olmadığından hemen hemen emin olduğunuzda ve sunucu kopyasını tamamen güncellemek istediğinizde. Bir kez geçersiz kılma ve güncelleme yaparsanız, yerel değişikliklerinizden hiçbirini almayacağınızı unutmayın.

    Not: Güncellemeden projeyi bir günden fazla tutmayın. Ayrıca kodu günlerce taahhüt etmeden saklamayın.

  3. Kimlerin aynı bileşende çalıştığını iletin ve her gün hangi değişiklikleri yaptıklarını tartışın.

  4. Herhangi bir sebep olmadıkça özellikleri ve yapılandırma dosyasını işlemeyin. Çünkü ayarlar bir sunucuda ve bulutta farklı olacaktır.

  5. Hedef klasörleri SVN'ye kaydetmeyin, yalnızca kaynak kodu ve kaynak klasörleri bir SVN deposunda tutulmalıdır.

  6. Kodunuzu kaybettiğinizde panik yapmayın! SVN geçmişinden önceki kopyayı geri alabilirsiniz.

  7. Projeyi diskinizin birden fazla yerine teslim etmeyin. Tek bir yerde kontrol edin ve onunla çalışın.



1

SVN kendi başına iyi bir başlangıçtır ve diğer bazı posterler en iyi uygulamalarla ilgili harika önerilerde bulunmuştur.

Ekleyeceğim tek şey, Sürekli Entegrasyon sürecini yürütmek için SVN'yi CruiseControl veya TeamCity ile bağlamanız gerektiğidir. Bu, yapı e-postaları gönderecek ve biri yapıyı bozduğunda herkesin bilmesini sağlayacaktır.

Sürecinizi kimin takip ettiği ve kimin olmadığı konusunda erkenden çok şey söyleyecektir. Biraz sürtüşmeye yol açabilir, ancak takımınız uzun vadede daha iyi durumda olacaktır.


1
kabul etti, CruiseControl ekibimi defalarca kurtardı.
Gordon Wilson

1
  • Her işlem için kesin yorum

  • (Ana hat) yapısını bozmayın!

  • Mantıksal birim değişir değişmez taahhüt et

  • Subversion'ı bir yedekleme aracı olarak kullanmaktan kaçının

  • Mümkün olduğunca biraz dallanma / birleşme

.

SVN en iyi uygulamalarında daha fazla ayrıntı bulunabilir .


0

Dallarda DEV çalışması yapın

  1. Şubenize sık yapılan taahhütler
  2. Şubenize ayrı / Modüler taahhütler ( buraya bakın )
  3. Sık sık bagajdan güncelleme / birleştirme. Do not sit yeniden üslenmesi olmadan dala

Topluluk Trunk

  1. Her zaman inşa etmeli / çalışmalı
  2. Kaydetme başına bir sayı ( tekrar buraya bakın ) Çoğunlukla, siz veya başkaları her seferinde birini geri alabilir.
  3. Yeniden düzenleme / boşluk değişikliklerini mantıksal değişikliklerle karıştırmayın. Takım arkadaşlarınız bir taahhütten gerçekte ne yaptığınızı çıkarmak için zor zamanlar geçirecekler.

Taahhütlerinizi ne kadar artımlı, modüler, ayrık ve özlü yaparsanız, sizin (veya muhtemelen başkalarının) şunları yapmanın o kadar kolay olacağını unutmayın:

  • Değişiklikleri kademeli olarak geri alma
  • Tonlarca beyaz alanı ve değişken isim değişikliklerini gözden geçirmeden gerçekte ne yaptığınızı görsel olarak anlayın.
  • Kaydetme mesajları, yapılan işin mesaj uzunluğuna oranı daha düşük olduğunda daha fazla anlama gelir.

0

Bunu yorum şablonu için kullanın:

[görev / hikaye xxx] [ikincil / büyük] [yorum] [yorumu takip et] [Hatanın URL'si]

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.