Her gün kod işlemek / kontrol etmek iyi bir uygulama mıdır?


63

Martin Fowler'in Sürekli Entegrasyon ile ilgili notunu okudum ve “Herkes Her Gün Ana Hattına Bağlıyor” listesine girdi.

Üzerinde çalıştığım bölüm tamamlanmadığı ve pratikte kodumu her üç günde bir işleme koyduğum sürece kod vermeyi sevmiyorum: bir gün görevi araştırmak / çoğaltmak ve bazı ön değişiklikler yapmak, değişiklikleri tamamlamak için ikinci bir gün ve testlerin yazılması ve sunulması için temizlenmesi için üçüncü bir gün ^. Kodu daha önce göndermekte kendimi rahat hissetmem.

Şimdi, depodan değişiklikleri alıyorum ve bunları günde iki kez yerel olarak bütünleştiriyorum, ancak daha küçük bir çalışma yapamadığım sürece bunu sık sık taahhüt etmiyorum.

Soru: Her gün o kadar iyi bir uygulama yapıyor ki, iş akışımı karşılamak için değiştirmem gerekiyor mu yoksa tavsiye edilmiyor mu?

Düzenleme: CVS'nin anlamını "taahhüt etmeyi" kastettiğimi açıklığa kavuşturmam gerekirdi, sanırım bu muhtemelen Fowler’ın bunu yazdığı 2006’da ne anlama geldiğini açıklıyordu.

^ Sipariş daha keyfi ve göreve bağlı, benim açımdan tam sırayı değil, zaman dilimini ve etkinliklerini göstermekti.


20
Bazı faydalı mantık derler ve gerçekleştirirse kodunuzu taahhüt edebilirsiniz. Bir ekip ortamında çalışıyorsanız kısa döngülerde kod işlemek daha iyidir.
EL Yusubov

4
Martin Fowler dağıtılmayan bir VCS'yi mi varsayıyor?
user16764,

4
Bu makalenin tarihine dikkat edin: 1 Mayıs 2006. Git ve Mercurial, Nisan 2005’e kadar başlamamışlardı ve benim izlenimim, gerçekten de yaklaşık 2008’de çekişe geçmeye başladıkları. 2009'dan önce ikisinden birine. Dolayısıyla 2006'dan bu makalede SVN gibi merkezi bir kaynak kontrol sistemi olduğu varsayılmaktadır. Tavsiye, DVCS kullanan ekipler için geçerli değildir.
Kyralessa

2
@Kyralessa: Makalede bile "Yıkılma modern [sürüm kontrol sistemi]" yazıyor.
che

4
Önce kod, sonra testler?

Yanıtlar:


43

Bu kurala katılmıyorum ve Mason Wheeler'ın ne dediğine katılıyorum . Birkaç fikir eklemek istiyorum.

Her seferinde taahhüdümde anlamlı bir değişiklik yaptığımı kabul etmeye çalışıyorum: birkaç küçük hata giderirsem, günde birkaç kez veya geri kalanı tarafından kullanılamayan daha büyük bir yazılım parçası üzerinde çalışıyorsam haftada bir kez yapabilirim. Kod, tutarlı bir duruma ulaşana kadar anlamlı bir şekilde kodlayın.

Ayrıca, taahhüt vermeyi, kod tabanına yeni işlevsellik sağlayan anlamlı bir revizyon yayınlamak olarak yorumluyorum . Başka geliştiricilerin revizyon geçmişine baktıklarında değişimin anlamını ve amacını anlayabilmesi için bir kişinin taahhütte bulunmadan önce kodu temizlemeye çalışması gerektiğini düşünüyorum. Diğer geliştiricilerin geçmişte gördükleri daha az değişiklik olursa, daha iyi: revizyon geçmişine baktığımda anlamlı işlevsellik katan artışları görmek isterim; Her geliştiricinin çözüme ulaşmadan önce sahip olduğu ve denemek istediği her küçük fikirle ilgilenmiyorum.

Ayrıca, SVN sunucusunu (veya hangi sürüm kontrol sistemi olursa olsun) kodun güncel anlık görüntüsünün bağlı olduğu bir yedekleme tesisi olarak kullanmanın iyi bir fikir olduğunu sanmıyorum (derlemesi şartıyla): USB bellek kullanabilirsiniz ya da harici bir USB sürücüsü ya da bir ağ diski mevcut kodunuzu yansıtır, böylece bilgisayarınız bozulursa kaybolmaz. Revizyon kontrolü ve veri yedekleme iki farklı şeydir. Bir revizyon yayınlamak , kodunuzun anlık görüntüsünü kaydetmekle aynı değildir .

Son olarak, her zaman ve sonra (örneğin yalnızca kodun mevcut durumundan gerçekten memnun olduğunda) ve birleştirme çatışmalarından kaçınmanın bir sorun olmaması gerektiğini düşünüyorum (çoğu zaman da) işlemek için iyi bir gerekçe değildir. Farklı kişiler aynı anda aynı dosyalar üzerinde çalıştığında, bu kötü bir uygulama olduğu için birçok birleştirme çatışması yaşanır (bkz. Örneğin bu makale , 7. nokta). Birleştirme anlaşmazlıkları bir projeyi açık ara yüzlere ve mümkün olduğunca az bağımlılığa sahip modüllere bölerek ve geliştiricilerin çalışmalarını koordine ederek, üzerinde çalıştıkları kodun mümkün olduğu kadar az çakışmasıyla azaltılmalıdır.

Sadece 2 sentim.

DÜZENLE

Aklıma gelen erken taahhütlere karşı bir başka neden de (çok) bir buggy sürümünün test edilememesidir. Bagajda çalışıyorsanız ve test ekibiniz her gün test yapıyorsa, birkaç saat boyunca (veya bir gün boyunca) test edilebilir sürümleri olmayabilir. Hatayı düzeltmeye çalışıp değişikliklerinizi geri almayı denemeseniz bile, yeniden oluşturma birkaç saat sürebilir. Diyelim ki, ekibinizde çalışan beş testçi, hareketsizlik nedeniyle ekibin zamanını 5 x 2 = 10 saat harcadınız. Bana bir kez oldu, bu yüzden en kısa zamanda taahhüt adına erken taahhütlerden kaçınmaya çalışıyorum .


23
Bir 'taahhüt' bir 'yayınlama' değildir. 'Taahhüt', 'anlık görüntü' anlamına gelir; scm-lingo'da 'yayınla' 'push' olarak adlandırılır. Elbette, SVN her iki kavramı da bir araya getirir, birçok mantıklı iş akışını imkansız hale getirir, ancak genel olarak kaynak kontrol iş akışlarının değil, aracın bir kısıtlamasıdır.
tdammers

3
Revision control and data backup are two different thingsEvet, kesinlikle böyle hissediyorum.
Kızak

1
@tdammers: Gayri resmi bir şekilde yayınlamak istemiştim: Kod bilgisayarımda olduğu sürece, genel kodda yaptığım özel değişiklikler. Taahhüt ettiğimde, ekibin geri kalanı ve resmi proje tarihinin bir parçası olarak bilinen yayınlanır.
Giorgio,

1
Bu durumda, 'taahhüt etmek' muhtemelen yanlış kelimedir. Birçok SCM yerel idarelere izin verir ve kodunuzu ekibin geri kalanıyla paylaşmak, genellikle 'push' olarak adlandırılan ayrı bir işlemdir. Yine, SVN iki kavramı bir araya toplar, ancak bu bir takım sınırlamasıdır ve iş akışınızın önüne geçerse farklı bir SCM'ye geçmeyi düşünün.
tdammers

@tdammers: Yerel taahhüt ve yayıncılık arasında açık bir ayrım olması ileri bir adım olacaktır. SVN'de bunun için ayrı bir dal kullanabilirim. Fakat yine de, bana neden mantıklı gelmeyen bir düzeltmeyi takip etmek isteyeceğimi merak ediyorum? Saat 5 olduğu için yeni bir revizyon (hatta özel bir revizyon) istediğime ikna olmadım ve eve gidiyorum. Bunun yerine yedeklemeyi tercih ederim.
Giorgio

107

Günde birkaç kez kod veriyorum . Ne zaman kodun derlenecek kadar tamamlandığı ve başka şeyleri bozmadığı bir noktaya ulaştığımda, içeri giriyor.

Günde birkaç kez güvenli bir şekilde check-in yapabilmeniz için işinizden ayrılmaya bakmalısınız .

Bunun için gerekçeler iki:

  1. Teslim edilmeyen tüm işler kaybolabilir - bilgisayarınızda feci bir arıza olabilir. Bu durumda, ne kadar çok beklerseniz, o kadar çok iş kaybedersiniz.
  2. Check-in yapmadan ne kadar çok iş yaparsanız, nihayet pişireceğine karar verdiğinizde diğerlerinin de entegre etmesi gerekecek. Bu, daha fazla çatışma ve birleştirme sorununu ortaya çıkarır.

2
Çatışmalar ve birleştirme sorunları ile ilgili ciddi bir sorununuz varsa, proje yöneticiniz işini yapmıyor demektir. Benzer işlevsellik içeren birden fazla durum aynı geliştiriciye gitmeli, tam olarak birbirinizin çalışmasını durduran iki veya daha fazla kodlayıcıya sahip olmamanız gerekir .
Mason Wheeler,

14
@MasonWheeler - Yapılmamış olan 3 günlük çalışmanın ardından, başkalarının aynı anda sahip olduğu bir koda dokunma olasılığı çok yüksektir. Bunu yapan bir grup programlayıcınız varsa, en iyi proje yöneticisi olayların çakışmasını engelleyemez.
12'de Oded

3
@Oded: Belki. Sanırım cevabım, geliştiricilerimizin (takımdaki bir düzine kodlayıcı) hepsinin üst üste binmeyen sorumluluklara sahip olma eğilimi gösterecek kadar büyük bir kod temeli üzerindeki deneyimlerime göre renklendiriyor. Küçük projelerde ne kadar farklı olacağından emin değilim.
Mason Wheeler

3
@ArtB - Sadece 3 günde bir kontrol eden kendin gibi biri varsa? Ya da haftada bir kez? Doğru olanı yapan başkalarına güveniyorsunuz.
Oded

3
Sorumu okuduğumda cevabım "Her hafta duş almanın iyi bir fikir olup olmadığını sormak gibi mi?"
Andrew Grimm,

39

Arkasındaki sebepleri anlamadan herhangi bir metodolojiye veya uygulamaya slavice bağlı kalmak asla iyi bir fikir değildir. Kargo kültü programlamanın geldiği yer burasıdır.

Bu nedenle, "Martin Fowler" dediği için her gün taahhütte bulunmalıyım "sadece aptalca. Ve bazen de pratik değildir. Karmaşık bir yeni özellik üzerinde çalışıyorsanız, birkaç gün boyunca üzerinde çalışana kadar kontrol edilmeye değer bir noktaya erişemeyebilirsiniz.

Bu, kontrol etmeden önce her şeyin mükemmel olduğundan emin olmanız gerektiği anlamına gelmez. Bir şeyler ters giderse işini kaybetmenin iyi bir yolu. Yapılacak doğru şey, konuyla ilgili iyi bir yargı geliştirmek ve kullanmaktır. Temel kurallar yalnızca size çok yardımcı olabilir.


1
Öyleyse, karmaşık özellik entegrasyonu / geliştirmesi ise, hala bunu yapmamak için büyük bir kayıp, belki de gövdeye değil, ama en azından bu özellik için bir dalda, branşlar bunun için!
Vincent B.

2
'Kontrol etmeye değer' derken ne demek istiyorsun? Başkasının kodunu kırmazsa, neden kontrol etmediniz?
Kirk Broadhurst

2
“Ne demek 'kontrol etmeye' demek istiyorsun? Başkasının kodunu kırmazsa, neden kontrol etmiyorsun?”: Çünkü kodun eski kopyalarını sadece bazı yerlerde bulundukları için saklamak istemiyorum zamanında gelin. Gelecekte almak isteyebileceğim bazı yararlı bilgiler içeriyorsa, kodun eski bir kopyasını da saklamak istiyorum. Aksi halde, revizyon tarihinde işe yaramaz bir gürültü çıkarıyorum.
Giorgio,

3
+1. Bir keresinde, her ne kadar kod her ne olursa olsun, işe yaramaz bir soruşturma olsa bile, her gün kodları kontrol etmemiz gereken bir ekipte çalıştım. Özellikle vcs'yi temizlemek için periyodik bakım gerektiğinden, verimsiz ve israf olduğunu kanıtladı. Paranoyanın bir şeyi tekrar yapmak için biraz zaman kaybetme riskiyle karşı karşıya olma riski üzerindeki bir birleşimi ve yöneticinin her gün işlemeniz gereken bir kitabı okuduğu içindi. Belki de çok ciddi bir örnek, ama cidden, bir şeyi kontrol etmenin “değmeye” değer olup olmadığını bilmek için bir karar vermediyseniz, muhtemelen işe uygun değilsinizdir.
S.Robins

14

Oded, mümkün olduğunca sık kod işlemek için iki önemli neden verdi. Birkaç tane daha ekleyeceğim:

  1. Kodunuz üzerinde çalışırken, diğerlerinin bu kod üzerinde bazı işlevlere ihtiyacı olabilir. Bunu almak için 6 gün beklememeliler. Bu durumda meslektaşlarım genellikle kod parçamda bir prototip yaratır, bunu taahhüt ederim, bedeni eklerim ve tekrar taahhüt ederim. Ve bu genellikle birkaç saat içinde yapılır.

  2. 'Ortak' kod, herkesin her değişikliği en kısa sürede görmesi içindir. Üzerinde çalıştığınız kod parçası diğerlerinin çalışmalarından tamamen ayrıysa ve beklemelerine izin vermeyecekseniz, üzerinde çalışmanız için bir dal oluşturmanız önerilir ve sonra her şey başarılı olursa, birleştirme işlemi için birleştirme Ana hat


1
Neden bu cevap (IMO) ile tek doğru ve doğru cevap (2. nokta) bu kadar düşük derecelendirilmiş ?! Tabii ki dalın noktası bu! @Mason Wheeler: Yani bir kerede bir hamle olmadan birkaç gün bir ham olarak kodlama zevk? O zaman neden bir sürüm kontrol sistemi kullanıyorsunuz?
Vincent B.

2
Bu doğru cevap. Göreviniz kullanılmadan önce çok sayıda iş günüyse, şube olun. Aksi halde, ekip üyelerinin en son sürüme sahip olmalarını sağlamak için ne zaman işe yaradığını taahhüt edersiniz, çalışıp çalışmadığını test edebilir ve en kısa zamanda eklenmiş / eksik özellikleri belirlerler.
Kirk Broadhurst,

“Öyleyse, ham bir günde birkaç kez tek bir seferde işlem yapmaktan hoşlanıyor musunuz? O zaman neden bir sürüm kontrol sistemi kullanıyorsunuz?” Aksine, günde birkaç kez işlem yapıp yapmadığınızı veya taahhüt etmeden arka arkaya üç gün çalışıp çalışmadığınızı belirlemek size kalmıştır. Hiç kimsenin kullanamadığı bitmemiş bir özellik yerine getirme noktasını gerçekten görmüyorum: sadece bir yedekleme yapın, ertesi gün bunu bitirin ve yerine getirin.
Giorgio

8

Ben tutmaya değer her mantıksal değişikliği yapmaya güçlü bir inanç duyuyorum. Sık sık karar verin ve kodun korunmasına değmezse, tekrar temiz duruma getirin. Kodunuzu geri itmek / yayınlamak için ne kadar beklerseniz, uygulaması o kadar zorlaşır ve karşılaşacağınız sorunlar da o kadar artar. Ayrıca katkılarınız hakkında çok daha hızlı bir şekilde geribildirim alacaksınız:

  • yapıyı bozuyorlar mı?
  • başka bir ekibin çabalarını çoğaltıyor musunuz?
  • yanlış bir şey mi yapıyorsun
  • ya da insanlar sizden bir şeyleri bekliyor mu?

Küçük değişiklikleri yönetmek çok daha kolaydır.

Ayrıca, farklı versiyon kontrol sistemleri arasındaki farkı da belirtmekte fayda var. Git (dağıtılmış) gibi bazıları, tüm geçmişinizi yerel olarak taahhüt etmenize ve kontrol etmenize izin verir, yalnızca yayınlamaya hazır olduğunuzda bastırırlar. SVN (merkezileşmiş) gibi diğerleri, iki aşamayı birleştirerek küçük işleri çok verimsiz hale getirecek.

Taahhütlerinizin esasen dokümantasyonu değiştirdiğini unutmayın. İşler ters gittiğinde, yeteri kadar değil geçmişe sahip olduğunuz için mutlu olacaksınız. Bir haftalık çalışma için tek bir taahhüt bana faydasız geliyor. Her bir mantıksal öbeğin özeti yerine, değiştirilen her bir kod satırını okudum.


5

Bence burada cevapların çoğu Martin Fowlers açıklamasında ana noktalardan birini özlüyor. Bu Sürekli Entegrasyonla ilgilidir . Ana hatta kontrol edilmemiş (basılmış / basılmış / birleştirilmiş) kodlanmamış test edilir.

Bu, yerel makinenizde işyerinden ayrılma zamanı geldiğinde kodunuz ne olursa olsun işleme koyma konusunda bir teşvik olarak okunmamalıdır. Burada kötü olabilecek birkaç kişi tarafından belirtildiği gibi, yapıyı kırar ve dengesiz bir ana hatta neden olur.

Ancak, değişikliklerinizi ana hatta kontrol edilebilecek küçük adımlarla sorun çıkarmadan yapmayı denemek bir teşviktir. Bu, hepsini parçalamak ve yeniden yazmak yerine kodun gelişimini teşvik eder.

Şimdi, bu çalışma şeklinin nesi iyi?

  1. Büyük miktarda kod veya devrim niteliğinde değişiklik yapmamak, yapıyı bozma şansını azaltır.
  2. Eğer taahhüdünüz yapıyı bozarsa, sorunların ne olduğunu tespit etmek, geri almak ve daha sonra hızlı bir şekilde sabit bir sürüm vermek oldukça önemlidir.
  3. Tüm testlerin koddaki her küçük değişiklikte yapıldığından emin olarak, kodun sürekli entegrasyon programının dışına çıkmasından kaynaklanabilecek ince hatalar veya gerilimler getirmediğinizden emin olursunuz.

Elbette bütün değişiklikler kendilerini bu yaklaşıma borç vermez. Diğerlerinin de belirttiği gibi, hiçbir kural mutlak değildir. Bununla birlikte, uzun süre boyunca ana hattan uzak durması beklenen değişiklikler için, kendi sürekli entegrasyon programına sahip alternatif bir ana hat oluşturun ve ona yönelik aynı yaklaşımı izleyin. Bugünün dağıtılmış VCS'siyle bu oldukça kolay bir şey.


+1: "Elbette tüm değişiklikler kendilerini bu yaklaşıma borç vermez." Bence mesele bu. Fowler'in tavsiyelerini iyi buluyorum ama biri davadan davaya yargılanmalı. Bunun yerine, bu tavsiye genellikle mutlak bir kural için genelleştirilir ve daha fazla dikkate alınmadan takip edilir.
Giorgio

@ Giorgio, bu konuda kesinlikle sana katılıyorum. Arkasında kimin olduğu önemli değil, kesin kural olarak tavsiye alınmamalıdır.
20

Bu konuda biraz daha fikir. “Ana hatta kontrol edilmemiş (basılmış / yayınlanmış / birleştirilmiş) kod test edilmemiş.”: Bunun iyi bir ilke olduğu ve kodunu kontrol etmeden ve test ettirmeden haftalar beklememesi gerektiğine katılıyorum. Bununla birlikte, bu ilkenin kör uygulaması test edilemeyen bile olsa kırılmış bir uygulamaya neden olabilir (bu canlılığı gördüm: bütün test ekibi günlerce boşta durur ve kod tekrar kullanılabilir duruma getirilene kadar hiçbir şeyi test edemez ). Belki başka kullanıcıların yazdığı şeyler bazı durumlar için geçerlidir ancak genel olarak değildir.
Giorgio,

1
Kararsız kodda kontrol yapmak asla tamam değildir. CI'yi kıran bir taahhüt geri alınmalıdır. Sık sık küçük artımlı değişiklikler yaparsanız, uzun zamandır denenmemiş büyük bir değişiklik yapsanız bile, bu tür bir kırılma ortaya çıkma olasılığı daha düşüktür. Yapıyı bozarsa geri almak daha kolay olabilir. Fakat dediğiniz gibi, bazen yıkıcı bir değişimin dışında bir yol yoktur. O halde, elbette, elinizden geldiğince cilalayın ve uygulamadan önce iyice test edin. Mesele kurallara uymak değil, tavsiyenin nereden geldiğini anlamaktır.
12'de haralden ayrıldı.

3

Her gün kontrol etmek için argümanlar:

  • Kod, sabit sürücü arızasına karşı saklanır ve yedeklenir
  • Etkinlik notlara kaydedilebilir ( perşembe günü ne yaptım ...? )
  • Var olan kod tabanıyla entegrasyon daha önce ve daha küçük parçalarda gerçekleşir, umarım çatışmaları belirler veya sorunları daha erken birleştirir
  • Ekibiniz üzerinde çalıştığınız şeyin görünürlüğüne sahip
  • Meslektaşlarınız, arayüzlerinize karşı daha erken çalışabilir ve 'büyük karmaşık kod kodunuzla' entegre olmaları için onlara zaman kazandırır.
  • Kodunuz, gerçek dünyada daha önce test edilecek veya en azından verdiğinizden daha fazla kullanıma maruz kalacak ve bu da hata veya eksikliklerin daha erken tanımlanmasına yol açacaktır.

Her gün kontrole karşı argümanlar:

  • Gerek yok ya da istemiyorum
  • Kodumu henüz temizlemedik, bu çok karışık
  • Zaman yok

Tembellik veya dağınıklık dışında günlükten daha az check-in yaptırmak için iyi bir neden olduğuna inanmıyorum. Geliştirme ortamında çalışan kodun görünmesinden daha kötü bir şey, geliştirme branşındaki kodla eşleşmiyor çünkü birileri henüz bitmedi 've bu yüzden de giriş yapmadı.

Bu konuda yanılmayı çok isterim bu yüzden lütfen günlük check-in aleyhine meşru herhangi bir tartışmamı bildirin.


“Tembellik veya dağınıklık dışında günlükten daha az check-in yaptırmak için iyi bir neden olduğuna inanmıyorum.”: Tam olarak aynı nedenden ötürü bunun tam tersi olduğuna inanıyorum. Kodun şu anki durumuna bakmak için zaman ayırabilir ve hatırlamaya değer bazı bilgiler içerip içermediğine karar verebilirim, veya tembel ve dağınık durumdaysam basitçe kontrol edebilirim (ve çok az bilgi içeren ekstra revizyonlar yapabilirim). içerik) derlediği sürece.
Giorgio,

1
Birinin tembel olmaması ve kodlarının her gün kontrol edilmesi için temizlenmesi gerekmemesi gerektiğini anladım. Öte yandan, bazı karmaşık kodlar üzerinde çalışırken, elde edilmesi zor çünkü temizleme birkaç saat sürebilir. ve her gün yalnızca kodunuzu temizlemek için birkaç saat geçiremezsiniz.
Giorgio

@Giorgio Kodunuzu temizlemek için birkaç gün harcıyorsunuz? Her gün check-in yaptırmak için iyi sebepler verdim - sebebiniz kodunuzu temizlemek zorunda olmanız mı? Sadece temizleyici kodunu yaz.
Kirk Broadhurst

Bu her zaman mümkün değildir, örneğin, sıfırdan geliştirmeye çalışıyorsam, doğru yapmak için çok fazla denemeye ihtiyaç duyan karmaşık bir kod (> 4000 LOC) geliştiriyorum. Günün sonunda, kodun biraz dağınık olması ve birkaç gün sonra tutarlı bir duruma gelinceye kadar düzeltmek istemiyorum. Maalesef o kadar akıllı değilim ki, aklımdaki mükemmel kod formları var ve her şeyi birkaç saat içinde yazabiliyorum (bir günün sonunda). Son zamanlarda böyle bir deneyim yaşadım ve tipik gelişim döngüsü (bir tutarlı durumdan diğerine) 2, 3 gündü.
Giorgio,

@ Giorgio, denetlediğiniz bir geliştirme şubeniz yok mu? Kod, başkalarının da incelemesi ve test etmesi için kontrol edilmelidir.
Kirk Broadhurst

2

"Ana hat haline birleştirme" olarak "taahhüt etmek" anlamına geliyorsa, o zaman bunu kesinlikle müşterilere sunulan bir yazılım projesinde her gün yapmamalısınız. Yapılmış ve test edilmiş değişiklikleri birleştirmelisiniz, böylece ana hat her zaman çalışır durumda ve serbest bırakılabilir olur ve yarı bitmiş özelliklere sahip bazı kırık durumda değillerdir.

Bununla birlikte, günümüzün dağıtılmış versiyon kontrolü ile çalışmanın lüksü hem ana hattı sabit tutabileceğiniz hem de git/hg/whatever commither zaman durumlarını korumak istediğinizi düşündüğünüz zamandır. Bunu birkaç saatte bir ve kesinlikle her günün sonunda yaparım.

DVCS ile çalışmanızı yayınlayabilir, ekibinizdeki diğer kişilerle ortak çalışabilir ve ana hat dalındaki değişikliklerle güncel tutabilirsiniz. Tüm bunları müşterilerinizin ve / veya diğer ekiplerin bağlı olduğu kodun istikrarını kirletmeden yapabilirsiniz.

Subversion'un en son teknoloji olduğu ve aşırı dallanmayan özellik dallarını çatalla birleştirmenin ve birleştirmenin bir yolu olmadığı zamanlar, birkaç farklı özelliğin aynı anda yapımda olduğu bir ana hattın olması en iyi yaklaşım olabilirdi. Ancak bu üstünlük 2010'un ötesine geçmiyor.


2

Team Foundation Server'da, bir check-in ile aynı olmayan 'Rafı' yapabilirsiniz, ancak kodunuzu yedekler, böylece makineniz ölürse değişiklikleri kaybetmezsiniz.

Ayrıca 'geliştirici hattı' ve 'ana hattı' olan yazılım evleri gördüm. Geliştiriciler, uygun gördükleri zaman geliştirici hattına giriş yapmakta özgürdürler ve yalnızca ekip lideri ana hatta erişebilir, bu yüzden üretime hazır olduğunda kodu dev'den anaya kopyalamaktan sorumludurlar.

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.