Soru Checkins küçük adımlar veya tam özellikler olmalı mı?


Sürüm kontrolünün iki kullanımı farklı kontrol stillerini dikte ediyor gibi görünüyor.

  • dağıtım merkezi: changesets genellikle tam bir özelliği yansıtacaktır. Genel olarak bu kontroller daha büyük olacaktır. Bu tarz daha kullanıcı / bakıcı dostu.

  • rollback merkezli: değişiklikleri küçük bireysel adımlar olacak, böylece tarih inanılmaz derecede güçlü bir geri dönüş gibi işlev görebilir. Genel olarak bu kontroller daha küçük olacaktır. Bu tarz daha geliştirici dostu.

Bazı inatçı kodlara / hatalara vurarak, sürüm denetimimi gerçekten güçlü bir geri alma işlemi olarak kullanmayı seviyorum. Bu şekilde, olası bir çözümü denemek için ciddi değişiklikler yapmaktan korkmuyorum. Ancak, bu bana "iyi çalışmadı" checkins bir sürü ile parçalanmış bir dosya geçmişi vermek gibi görünüyor.

Bunun yerine, değişiklik kümemde tam özellikleri göstermeye çalışırsam, sürüm kontrolü yazılımımın kullanımını denemekten kurtarırım. Ancak, kullanıcı / bakıcılar için kodun nasıl geliştiğini anlamak çok daha kolay. Kod incelemeleri, çoklu dalların yönetilmesi vb. İçin büyük avantajları vardır.

Peki bir geliştirici ne yapmalı? Küçük adımlar veya tam özellikleri kontrol edin?


25
2018-06-14 22:41


Menşei


Bir kopyası gibi görünüyor: stackoverflow.com/questions/107264/... - gnovice
@gnovice Bu sorunun bir kopyası değil. Bu soru CVCS bağlamındayken, bu soru DVCS kapsamındadır. - wilhelmtell


Cevaplar:


DVCS sistemlerinin güzelliği, sahip olabileceğiniz her ikisi deçünkü bir DVCS'de bir CVCS'den farklı olarak, yayıncılık ortogonal işlemekle. Bir CVCS'de, her bir taahhüt otomatik olarak yayınlanır, ancak bir DVCS'de, taahhütler yalnızca yayınlandıklarında yayınlanır. itilmiş.

Yani, işlemek küçük adımlar, sadece Yayınla çalışma özellikleri.

Tarihinizi kirletmekten endişe ediyorsanız, yeniden yazabilirsiniz. Tarihin yeniden yazılmasının kötülük olduğunu duymuş olabilirsiniz, ancak bu doğru değildir: sadece yeniden yazmak yayınlanan Tarih kötülüktür, ama yine de, yayınlama ve taahhüt etme farklı olduğundan, yayınlanmamış geçmişinizi yayınlamadan önce yeniden yazabilirsiniz.

Linux gelişimi bu şekilde çalışır. Linus Torvalds, tarihi temiz tutmakla çok ilgili. Git ile ilgili çok erken e-postalardan birinde, yayınlanan tarihin size benzememesi gerektiğini söyledi. aslında onu geliştirdi, ama nasılsın olurdu bunu geliştirdi, eğer her şeye kadirseniz, geleceği görebiliyordu ve hiç bir hata yapmamıştı.

Şimdi, Linux biraz özel: her gece saatte bir, günde 24 saat, haftada 7 gün, yılda 365 gün, gece, hafta sonları, tatil ve doğal afetler de dahil olmak üzere 1 taahhütte bulunuyor. Ve bu oran hala artıyor. Sadece her yazım hatası ve beyin fırtınasının da bir taahhütle sonuçlanacağını düşünün.

Ancak, geliştiricilerin kendileri özel depolarında kendileri istedikleri sıklıkta işlemektedir.


19
2018-06-14 23:09



Çekirdeğinizle olan örneğinize kadar taahhüt geçmişinizi yeniden yazmayı gerçekten takdir etmedim. - deft_code


Peki bir geliştirici ne yapmalı? küçük adımlar veya tam özellikleri kontrol edin?

Her iki dünyanın en iyilerini, özellikle de gitve hangi tarihin yayınlanacağı konusunda seçici olmanızı sağlayan diğer DVCS'ler. İşte bunu gösteren basit bir iş akışı.

  • Projeniz var ana ve serbest bırakmak dalları. Geliştiriciler her birinin kendi geliştirmek dalları itmiyorlar.

  • Kullan geliştirmek günlük işlerinizi yapmak için. Bite boyutlu taahhütler burada görünür ve zaman içinde projenin durumundaki artışları temsil eder. Yapabilirsin topic- * birkaç günden uzun süren ya da büyük refraktörlerden daha uzun özellikler üzerinde çalışmak için şubeler. Sen taahhüt geliştirmek Çok sık, belki de birkaç kez bir saat. Düzenlediğin bir belgede "Kaydet" e benzemek gibi.

  • Bir sonraki sürüm için uygun olan bazı taahhütleriniz olduğunda, ilgili taahhütleri birleştirirsiniz. serbest bırakmak. serbest bırakmak Artık, seçmenlerinizden seçkin olarak alınmış bir grup bireysel taahhüt var. geliştirmek dalı. Sen taahhüt serbest bırakmak iyi bir durma noktasına ulaştığınızda. Bu genellikle günde birkaç kez.

  • Serbest bırakılmaya hazır olduğunda, lider geliştiriciniz son birleşmeden bu yana tüm taahhütleri eziyor ana üzerinde görünen tek bir birleştirme işlemine ana. Ardından bu işlemi sürüm tanımlayıcısıyla etiketlersiniz (ör., V.1.0.4). Bu nadiren olur, belki bir kez tekrar veya birkaç haftada bir kez.

Burada, kekini al ve yemek de. Yayınlanmadan önce, gerçekleşmemesi gereken veya bırakmaya gitmek istemediğiniz değişiklikleri geri alabilir ve bunu tek seferde yapabilirsiniz. Geliştirici dostu! Ancak kullanıcılar da istediklerini alır: büyük, globi işlemleri ana Bu son sürümden beri nelerin değiştiğini gösterir.


20
2018-06-14 22:50



+1, sektör olarak çalışmamız gereken şey bu. - Craig Trader
Pro Git'deki konu dallarında daha fazlası progit.org/book/ch3-4.html ) ve bu yüzden ( stackoverflow.com/questions/284514/what-is-a-git-topic-branch ). - Xiong Chiamiov
wilhelmtell: Bence yanlış anlaşılma olabilir. Değişiklikler arasında kesinlikle uzun bir zaman var. masterama iter release Gelişimdeki taahhütleriniz, paylaşmak istediğiniz bazı işleri temsil edecek kadar önemli olduğunu düşündüğünüz her zaman gerçekleşmelidir. - John Feminella
İki kuruşum: bir çok projede, ezme, serbest bırakma ile üstat arasında değil, gelişmek ve serbest bırakmak arasında gerçekleşiyor. Geliştirici, bütünleştirici değil, şeyleri "nasıl yapması gerektiğini" tarihe sokmanın en iyi yolunu bilir. Daha sonra temiz sonucu entegrasyon boru hattına aktarabilirler (sonraki -> master). - Cascabel
@Jefromi: İki yaklaşım karşılıklı olarak münhasır değildir. Bir geliştirici olarak, bir sürü taahhütün tek bir şeye aktarılması gerektiğine karar vermekte özgürsünüz. Bununla birlikte, yukarıdaki (son derece basit) iş akışında, entegratör her zaman tek bir işlem için her şeyi squashes master Bir sürüm hazır olduğunda. Tüm sürümün bir ambalajı gibi. (Diğer taahhütler sağlam kalıyor releaseAncak, tam tarihi görmek istiyorsanız.) - John Feminella


Küçük adımlar. Aramasının bir nedeni var. gözden geçirme, ve yok serbest bırakma kontrolü :)

İstediğiniz kadar sık ​​isteyin. Geri çekilme. Bir "devam etmekte olan" dalında kodun işlenmesi için hiçbir zaman olumsuz sonuçlar olmamalıdır. "İnşa etmeyi" engellemeyi taahhüt eden geliştirme mağazaları, RCS'yi kötüye kullanıyor. Aynı şekilde, atlayarak herhangi bir taahhüdün anlamı ne olursa olsun, revizyon kontrolü amacı ile çatıştığı için tehlikeli bir politikadır. Bunun anlamı, etiketlere, dallara, klonlara, stashlara veya RCS'niz onları çağırdığı her şeye atfedilmelidir. Bu şeyler meta verilere sahiptir (belki de isim) amacı iletmek için tasarlanmış. Düzeltmeler, yalnızca değiştirdiğiniz şeylerin geçmişidir.

Yapmak istediğiniz son şey, geliştiricilerin kodlarını işlemelerini engellemek için bir politika oluşturmaktır. herhangi sebep.


6
2018-06-14 23:43





Benim önerim, deneme amaçlı bir şube veya ayrı bir depo oluşturmak olacaktır. Ardından, özellik tamamlandıktan sonra, kodu şubeden ana kod koduna geri birleştirebilirsiniz. Umarım, bu her iki dünyanın en iyisine sahip olmanızı sağlar.


3
2018-06-14 22:48



Deneme için yeni bir havuzun biraz aşırı olduğunu düşünüyorum, ancak bu tür bir iş için bir dalı çekmek şubelerin mükemmel bir şekilde kullanılmasıdır. Şube üzerinde sürekli bir entegrasyona sahip olmamanız için, bozulan check-in'ler başkalarını etkilemeyecek ve çekilmekten çekinmeyecektir. Bir uyarı, eğer diğerleri çok fazla değişiklik yapmıyorsa, düzenli aralıklarla değişiklik yapmaktır. - Eric Olsson
Yeni bir depo, bu tür bir şeyi mücellede (veya en azından birkaç yıl önce) yapmanın standart yoludur. - Xiong Chiamiov
Sorun şu ki eğer birleşmek geri değişim mercurial da revizyon tarihini birleştirecek. Bu nedenle, kodun tamamı ana repoda bir araya geliyor olsa bile, özellik işlerinin yerine küçük adımlı işler haline gelmeye devam ediyor. - deft_code


Git'i gerçekten sevdiğim bir şey, devrenizdeki repo. çevre senin repo. Bakıcının repo'sunun bir kopyası. Bu repoya istediğin her şeyi yapmakta özgürsün ve bazı çılgın hikayeleri zorlamadıkça bakıcını işaretlemezsin.

Bu noktaya kadar, gelişim ve denemelerinize yardımcı olmak için olabildiğince avantaj sağlamak için dallanma ve birleştirmeyi kullanın. Sadece yukarı akışla en rahat olduğunuz değişiklikleri itin. Git bile, eğer gerekliyse, taahhüt geçmişinizi daha az değişiklik kümesi haline getirme yeteneği sağlar; böylece, yaptığınız bir dizi işlemi tek bir taahhütte zorlayabilirsiniz.

Esneklik, kişisel iş akışınıza ve iş arkadaşlarınızın sahip olduğu politikalara aşırı derecede güç vermektedir.


3
2018-06-14 23:18





Küçük adımlar gerçekten harikalar. Bunları her zaman başka bir repoda daha büyük adımlarla paketleyebilirsiniz. Aksini yapmak için, bazı sistemlerde (özellikle git) yapılabilen "geçmişi yeniden yazmanız" gerekir, ancak istediğiniz kadar desteklenmez.

Küçük adımlardan hoşlandığım başka bir sebep meslektaşlarım, yaptığım şeyi kolayca görebilir.  Üç veya dört saat çalışacak olursam, iş arkadaşlarımın ilgili konuları görebilmeleri için, yarım düzine iş sözleşmesi yapmak benim için çok daha mantıklıdır. (Ve onlar bana aynı nezaket uzatmak için teşekkür ederiz.)

Son olarak, küçük adımlar çatışmanızın daha az olası olmasını sağlar, ya da yaptığınız zaman daha küçük olurlar.

Birden çok dalda yalnız çalışırken bile küçük adımlar kullanırım.

Özet: Günlük iş akışı için küçük adımların birçok avantajı vardır. Dağıtım merkezli bir iş akışı istiyorsanız, sadece dağıtım için bir repo ve bir şube oluşturun ve büyük adımlarınızı tam olarak istediğiniz gibi ayarlayabilirsiniz.


3
2018-06-15 01:16





Çoğu zaman, aşağıdaki başparmak kuralı ile kurtulabilirim - mantıklı olan bir zamanda en küçük miktarını kontrol edin (ve yine de faydalı veya iyileştirici olabilir). Bu, işimi daha iyi planlamamda bana yardımcı olur (ki bunlarla sınırlı olmamakla birlikte), birçok yararı vardır ...

  • Daha iyi gelişme tahminleri.
  • Daha iyi test tahminleri.
  • Daha hızlı geliştirme zamanı.
  • Daha az genel hata.
  • Modüller arasında daha az bağlantı.
  • Kodum yanlışlıkla bilerek başka bir şey koparsa, daha çabuk bulma.
  • daha çok

Bununla birlikte, bir şubenin oluşturulması gerektiğinde ve ardından işin yapıldığı zamanlarda, bunları ana hatta birleştirin. Bununla birlikte, şubede bir kez faaliyete geçtiğinde, hala tüm bu avantajları oradan uzaklaştırarak kuralı takip etmeye çalışıyorum.

Bu yardımcı olur umarım.


0
2018-06-15 01:10