Neden bir taahhüt mesajı yazmalıyım?


18

Neden bir taahhüt mesajı yazmalıyım? İstemiyorum ve her seferinde aptal olduğunu düşünüyorum.

Kullandığım bir GUI ön ucu, adlandırılmamış olarak sizi bunu yapmaya zorlar. Diğerlerini her seferinde komut satırında VCS kullanıyor olsalar da işitiyorum.

Günde birkaç kez taahhüt edip bir özelliği bitirmediysem ne hakkında yazıyorum? SADECE birçok işlemden sonra bir mesaj yazıyorum ve mini bir etiketin veya gerçek bir etiketin zamanının geldiğini hissediyorum.

Haklı mıyım yoksa bir şey mi kaçırıyorum? ayrıca dağıtılmış bir sistem kullanıyorum


1
Rahatsız etme, sadece yorum satırında "falan" de. Kodu hiç kimseyle paylaşmadığınız sürece ve hiç kimse üzerinde hiç çalışmadığı sürece ve kodu geri almanız gerekmediği sürece ve tek bir kod hatası yapmadıkça ve ... bir dakika, neden versiyon kontrolünü tekrar kullanıyorsun?
Michael Durrant

Yanıtlar:


24

"Sadece yazmak için yararlı, iyi düşünülmüş bir mesajınız olduğunda ve özelliğiniz% 100 tamamlandığında ve bunun için birim testleriniz olduğunda taahhüt edin" diyen herkese, diyorum ki: Hala SVN zihniyetindesiniz .

Git kullanıyorsanız , akıllı iş akışı dediğim şey budur:

  1. Teslim olarak istediğiniz sıklıkta . Buraya eski kısa mesajları yazın. Kimse yine de görmeyecek.
  2. 10 taahhütte bulunduktan sonra üzerinde çalıştığınız özelliği bitirdiniz. Şimdi testler yazın ve bu testleri yapın. Ya da başka ne istersen. TDD'yi beğendiyseniz, önce testleri yazın, umrumda değil, git de.
  3. git rebase -iİlk 'dağınık' taahhüdünüzden, yakın geçmişinizi güzel mesajlarla mantıksal, temiz taahhütlerde ezerek, düzenleyerek, atlayarak ve başka şekilde temizleyerek yerel geçmişinizi eklediniz ve düzelttiniz .
  4. Temizlikten sonra, birisinden sizden çekmesini isteyin.
  5. Durulayın ve tekrarlayın.

3. adımın, takip ettiğiniz güzel taahhütlerle sonuçlandığınıza ve ilk iki adımı tamamlayana kadar SVN'yi kullanmaktan kaçınmanız gerektiğine dikkat edin, bu da diğer cevapların çoğunun önerdiği şeydir. IOW, yarı yazılı, test edilmemiş kodunuzu başkalarına vermek istemezsiniz, bu nedenle özelliğiniz bitene kadar bir hafta boyunca taahhütte bulunmazsınız. Sürüm kontrolünü tam potansiyeline kullanmıyorsunuz.

Ayrıca, 1. ve 3. adımlar arasında herhangi bir yerde git push, dizüstü bilgisayarınızın HDD'si ölürse ücretsiz yedeklemeler almak için sunucudaki kendi özel repo aynanızdaki değişikliklerinizi yapabileceğinizi unutmayın.


İyi cevap, hoşuma gitti. Rebase kullanmaktan biraz korkuyorum. İşte yanlış gidiyor ve nasıl kurtarılacağı hakkında bir makale bluemangolearning.com/blog/2009/03/…

@acid, kendi özel değişikliklerinizi yeniden temel alıyorsanız, herhangi bir çakışma olmamalıdır. Ayrıca, denemek zorunda sert GIT'de şey kaybetmek.
Alex Budovski

4
benim iş akışı, git rocks
Nazgob

1
@Boris: Çünkü açıkça yıkılma DEĞİL git git hakkında konuşuyor

3
Az önce ne yaptığınızı belirten bir cümle yazmak gerçekten önemli bir iş olmamalı ve rebase ile tarihi yok etmek iğrenç görünüyor. Diyelim ki bu on taahhütten 5'inde bir hafta sonrasına kadar yakalanmayan bir hata girdiniz. Tek bir küçük taahhüde sabitleyebilmeniz size çok yardımcı olacaktır.
Robot Gort

55

Çünkü zavallı bir bakıcı bir böcek avlarken ve rev'de eklendiğini fark ettiğinde. xyz, hangi rev'i bilmek isteyecek. xyz yapmalıydı.


38
Peki o zaman ben sadece teslim 5000 spagetti, JEESH okuyabilir !!! Bazı insanlar sadece tembel!
Edward Strange

9
Zavallı enayi sizden sonra gelir (3 yıl içinde) ve tarihe bakar ve gider ... WTF .. WTF .. WTF, en azından neler olup bittiğine dair bir fikir sahibi olacak. "Rutin check-in, özellik X, eksik" gibi bir yorum ekleyebilirsiniz.
quickly_now

3
@ acidzombie24: Çünkü her taahhüt bunun ne için olduğunu söylemelidir - "düzeltilmiş yazım hatası ...." olsa bile, revizyonların ne için olduğunu bilmediğiniz sürece bir düzeltme geçmişinde bir anlamı yoktur.
Orbling

11
@quickly_now, zavallı enayi kendin bile olabilir. Ne yazık ki bu, tam olarak takdir etmek için kendinizi deneyimlemeniz gereken şeylerden biridir .

2
@acidzombie - neden eksik değişiklikleri kontrol ediyorsun ??
Edward Strange

35

Kaynak kodunuzu yorumluyorsunuz değil mi?

En iyi yorumları yazıyorsunuz, kod olarak neden söyleyenler sadece nasıl söylüyor ?

Taahhüt mesajı böyle bir yorumdur ve bu nedenle çok önemlidir ve doğru yapmak için ne kadar düşünürseniz, yazılımın gelecekteki bir bakıcısı için o kadar yararlı olur.

Herhangi bir aktif yazılım parçası için, bu özel yorum aşağıdaki gibi bir şeyle gösterilecektir.

gitk - tüm örnek

( http://longair.net/blog/2009/04/25/a-few-git-tips/ adresinde bulunur ). Bu, kuşların yazılımda kimin ne zaman çalıştığını ve ne yaptığını görmelerini sağlar.

O Not bu "diyerek yani böyle bir listede gösterilmesini yorumunu taahhüt için nihai hedef olduğuna neyi gelecekteki kendisine ya da iş arkadaşınıza ve BU için" Eğer iyi yazılı özen mesajları işlemek gerekir nedeni budur.


2
@acidzombie, sadece git için konuşabilirim, ancak yerel olarak çok küçük adımlarla taahhütte bulunabilir ve daha sonra yukarı doğru iterken hepsini tek bir grupta gruplayabilirsiniz. Bu taahhüt mesajı daha sonra açıklayıcı olabilir.

2
@ acidzombie, bir yorumu garanti etmek için yeterli değişiklik yapmadıysanız neden taahhüt ediyorsunuz? Lütfen açıkla.

2
@Thor: Sürüm kontrolü kodunuzu kaybolmaya karşı koruduğundan ve yarı bitmiş kod bile korunmalıdır.
Ben Voigt

1
@Ben, taahhütler uzun süreli depolama içindir ve iş "parçaları" doğru bir şekilde yansıtmalıdır. Bence kayıplara karşı koruma versiyon kontrolüne diktir ve uygun bir yedekleme sistemi tarafından ele alınmalıdır. Mac için Time Machine'i bu amaç için son derece uygun buldum - Umarım Windows için benzer bir sistem mevcuttur.

2
+1 Kaynak kontrolümü anlamsız taahhütlerle kirletmeme hayranıyım. Belirli bir taahhüdü aramayı kolaylaştırır (faydalı yorumlar yoluyla) ve kodu kontrol ettiğimde, her zaman çalışır durumda olduğunu biliyorum. Geleneksel yedekleme yazılımı, işlemler arasında yerel veri havuzumu korumak için daha iyi bir seçenektir. Bu bir DVCS ile iyi çalışır, ancak yerel bir check-in'in gerçekten kodunuzun bir yedeği olmadığını hatırlamanız gerekir.
Adam Lear

15

Taahhüt mesajı size aptalca geliyorsa, yanlış kullandığınız anlaşılıyor.

Taahhütler iyi bir nedenle yapılmalıdır - bunlar üzerinde çalıştığınız özellik için ayırdığınız görevlerle ilgili olmalıdır. Bu görevler resmi olsun ya da sadece aklınızda olsun, taahhüt ettiğiniz her değişiklik az çok bir görevi tamamlamalı ve bu nedenle bir şekilde işlevsel olmalıdır.

Sonra taahhüt mesajlarınız çok daha iyi bir amaca hizmet eder. Tamamladığınız görevi ve başka bir yerde izlenmediyse, o görevin neden gerekli olduğunu veya hangi amaca hizmet ettiğini açıklayın:

  • Daha iyi kapsülleme için kullanıcı sınıfını yeniden düzenledi
  • Arayüzlerin denetleyici sınıfında kullanılabilmesi için API saplamaları oluşturuldu
  • Veritabanı sınıfını soyut bir sınıfa dönüştürdü, böylece sahte veritabanları test durumlarında kullanılabilir

Daha sonra siz veya diğer geliştiriciler depoya veya dosya geçmişine göz atabilir ve belirli evrimlerin nerede ve neden olduğunu kolayca görebilirsiniz. Ya da, belirli bir revizyonun bir hatadan suçlu olduğu tespit edilirse, taahhüt mesajı, bu hattın neden yerleştirildiğine dair bir ipucu verecektir, böylece sadece onu sökmek ve olduğu düşünülen bir şeyi yeniden reddetmek zorunda kalmazsınız. sabit ve bunun yerine doğru şekilde düzeltebilirsiniz.


1
+1, çok sık veya kötü durma noktalarında işliyormuş gibi geliyor. Sadece bazı deneysel değişiklikler için iyi bir yedekleme noktası istiyorsa, endeksi, geçici bir dalı kullanabilir, yenilerini oluşturmak yerine önceki taahhütleri değiştirebilir, hatta editöründe geri alma arabelleğini kullanabilir.
Karl Bielefeldt

1
@Karl: Git google konuşmasında IIRC linus günde ortalama 6 taahhüt yapıldığını söyledi. Şimdi, ne kadar çok kabul edilir bilmiyorum, ama ben şu anda bu projede ben bazı yansıma çalışma var (doğru veri döngü, onunla bir şey yapmıyorum), ben arayüzü oluşturulan sonra ama seri hale getirme çalışmaları önce taahhüt etti. ve şimdi ben 2 saat önce arayüzü vardı serileştirme çalışma üzerinde çalışıyorum. Bir kez işe yarayacak ve 'yansıma temelleri' diyeceğim ama ilk üçte neden bir özellik her x 'çalıştığında' bir özellik 'çalıştığında kolayca görebildiğimde neden yorum bırakacağım.

Aslında ben bazı temel test almak kadar kapalı tutabilir, çünkü aksi takdirde, her taahhüt yorum eğer bunlardan hangisi istikrarlı bir yansıması olduğunu nasıl bilebilirim? 'yansıma temelleri', 'yansıma serileştirme' 'yansıma serileştirme testi' Serileştirmenin bir zorunluluk olduğu varsayılarak 2. veya 3. olabilir. Test, birim test veya testin gerektirdiğim temel sınıflar üzerinde çalışıp çalışmadığı anlamına gelebilir. Sadece 'yansıma çalışma temelleri' diyebildiğimde yorum yapmanın mantıklı olduğunu düşünüyorum, daha sonra bunların hangisinin temel bilgilerin işe yaradığını kastettiğini tahmin ediyorum. Ayrıca okumak için daha az olduğunda sıyırmak / bulmak daha kolaydır.

@acid, bir taahhüdün tüm amacı, ona geri dönebilmek veya onunla yapılan değişiklikleri karşılaştırmaktır. Bunu daha önceki taahhütlerinizle yapmanız gerekiyorsa, hangisini seçeceğinizi nasıl bilebilirsiniz? Burada roman yazmak zorunda değilsiniz. "arayüz çalışması," "serileştirme çalışması" ve "yansıma çalışması" bence gayet iyi. Günde sabit bir maksimum komisyon sayısı yoktur, ancak mesajlarınız "arayüz üzerinde biraz çalışma" "arayüz üzerinde biraz daha fazla çalışma" "arayüz neredeyse bitti" şeklinde okunuyorsa, çok sık işlem yapıyorsunuz ve sadece İçerik.
Karl Bielefeldt

@Karl: btw endeksi nedir? Git bir zulası olduğunu biliyorum ama bu konuda konuştuğunu sanmıyorum. Bu ne işe yarıyor?

12

Taahhüt yorumları her şeyi çözmez. Her zaman yardım ettikleri kadar yanıltıcı olma şansları vardır - özellikle geliştiriciler bunlara girmek zorunda kaldıklarında. Bunu deneyin: ormanda bir ekmek kırıntısı izi veya bir dağcılık ara noktası veya iz mermisi gibi düşünün. Doğru yapıldığında, başka türlü kafa karıştırıcı bir yol çizebilirler.

Onlardan çok şey yapma. Dürüst ol:

  • "X özelliğini işlemek için uzaysal dizin öğeleri, Daos ve UI'ler düzenlendi"
  • "Özellik isteği # 1234 ve hata # 5678 için artımlı check-in"
  • "Son derlemeyi kırdım. Bunlar özlediğim dosyalar."

Kısa tutun ve "büyük resim". Mümkünse, özellik / hata sisteminizdeki bir sorun numarasına bakın. Bazı sürüm kontrol arayüzleri bu tür şeyler için bir alan içerir.


2
Kısa tutma fikri için +1. Kısa ve basit ve yeterince iyi mükemmel.
quickly_now

1
IMHO daha da iyi bir rehber "mümkün olduğunca kısa, gerektiği kadar kısa" bir reçete; çünkü bazen temel bilgileri feda etmeden kısa tutmak mümkün değildir
hvr

11

WTF / dakika sayısını azaltır;)

resim açıklamasını buraya girin

ki bu daha mutlu bir ekibe (sizden nefret etmeyen) dönüşür ve potansiyel olarak daha düşük maliyetle daha iyi ekip çıkışı


4
Eğer bunun neden doğru olduğunu açıklarsanız, bunu oylatırdım .
SingleNegationElimination

@TokenMacGuy - Üzgünüm, takip etmiyorum.
Rook

1
Etkileyici taahhüt mesajları WTF'leri / Dakikayı nasıl azaltırlar (kesinlikle yaparlar)
SingleNegationElimination

@TokenMacGuy - Bunun açık olduğunu düşündüm.
Kale

9

Ekibinizin geri kalanı WTF'yi proje ağacında değişiklikleri kontrol etmekte olduğunuzu bilir.


7
SADECE GELİŞTİRİCİ olduğumda projelerime taahhüt mesajları ekliyorum! Çünkü bu şeylere bakmak için 2 yıl içinde döndüğümde, o sırada yaptığım WTF'yi bilmek istiyorum. Bunun% 99'una bakılmayacağını gayet iyi biliyorum. Zamanın% 1'i bana 2 hafta acı çekecek ve 10 saniyelik bir taahhüt mesajına girmenin fiyatının alacağım uzun vadeli faydaya değer olduğunu düşünüyorum.
quickly_now

@quickly_now, acı bile? Kodunuz bu kadar kötü mü?

1
@quickly_now: Buna amen. Bir ya da iki yıl içinde, benden bir sürü kod çıkıyor, her son parçanın aylar sonra ne yapması gerekiyordu, tanrı sadece biliyor. Tanrım ve revizyon geçmişim.
Orbling

Oh evet. Ben de katılıyorum. Bunu deneyim == alçakgönüllülük olarak düşünüyorum.
Michael Durrant

8

çünkü uygun taahhütlü mesajlar girmeyi denemezseniz, kolejim gibi mesajlar giren

no changes

veya

testing

yüzden fazla değiştirilmiş dosya ile taahhüt (şaka yapmıyorum !!).

Böyle bir geliştirici olursanız, sadece bir mesaj girmenin ne kadar aptal olduğunu düşünürseniz düşünün, dünyanın geri kalanının gözünde aptal görüneceksiniz.


1
Hiç duymamışsam, taahhütten önce akran değerlendirmesi için mükemmel bir aday gibi görünüyor.

2
Ah adamım, bu tür insanlarla çalıştım. Beni deli ediyor.
sevenseacat

4

Değişiklikler anlamlı değilse neden taahhüt ediyorsunuz?

Sadece anlamı olan değişiklikler yapın. Örneğin, yaklaşık 3 gün sürdü geçen hafta oldukça büyük bir yeniden düzenleme yaptım. Bu süre zarfında tonlarca taahhüt ederdim. Bazıları oldukça küçük değişikliklerdi ('yeni sorumluluğu yansıtacak şekilde X sınıfı Y olarak değiştirildi' veya 'Z yöntemini (Q sınıfına taşıdı') ve diğerleri gerçekten büyüktü. Bir özellik / yeniden düzenleme ile işim bittiğinde bazı taahhütlerin ezilebileceğini kontrol ediyorum (en azından git bunu destekliyor, diğer araçlar hakkında bilmiyorum), ancak genellikle onları daha sonra yardımcı olduğu için olduğu gibi bırakıyorum.

Sanırım bir satırı düzenlemenin ortasında işlemezdin, bu yüzden bir anlamı olmalı. Son işlemden bu yana ne yaptığınızı açıklayın.


3

biraz değişiklik yaparak sisteminizi kırdığınızda bir durum düşünün ve bunu ekip tarafından yapılan birkaç işlemden sonra gerçekleştirin. Değişikliğin ne olduğunu hatırlamıyorsunuz, ancak X özelliğini geliştirirken veya bir modülü Y modülünden kaldırırken bir şeyin yanlış olabileceğini hatırlıyorsunuz.

Ancak ne yazık ki revizyon numarası X veya Y'yi değiştirdiğinizde size söylemiyor. Yani seçiminiz ya son N gün boyunca işlenmiş tüm kodları okuyor ya da yazdığınız ayrıntılı taahhüt mesajlarını okuyor (koddan çok daha okunabilir).

Dolayısıyla, tamamlama mesajında ​​aynı, sıkıcı, işe yaramaz, alakasız bir metin yazarsanız, yapmanız gereken, taahhüt mesajına sahip olmaktan daha zararlıdır. Çünkü hata kökü bulmak yerine yanlış mesaj sizi yanlış yönlendirir.

Bu yüzden her taahhütte bulunduğunuzda size ve bakımcınıza yardımcı olabilecek anlamlı taahhüt mesajları yazmaya çalışın.


Bunu neden günün sonunda, iki günde bir yerine ya da bir özelliği bitirdiğimde yapmam gerekiyor?

1
"doğal" bir nedeni yoksa neden bunu sık sık yapıyorsunuz?

Ne zaman önemli değişiklikler yaparsam taahhüt ediyorum, böylece depoya yansıtılabilir ve diğer geliştiriciler bu değişiklikleri kontrol edebilir. Ancak verdiğiniz cevap, kimin ve ne zaman yaptıklarına kuş bakışı yardımcı olur.
GG01

@ acidzombie24 Gerçekten gerekmedikçe yarı bitmiş şeyleri yapma. Ve böylece diğer insanlar bir gün hastalandığınızda ne yaptığınızı / üzerinde çalıştığınızı görebilir ve hiçbir şey çalışmaz. Ya da 2 gün boyunca toplantılarda oturmanız gerektiğinde kaldığınız yeri hatırlayabilirsiniz. Ya da böylece hangi revizyonun bir derlemeyi bozduğunu ve farkına daha kolay bir şekilde saptayabilirsiniz.
nos

@ Thorbjørn: Neden tekrarlamak istemediğim bir değişikliği yapmıyorum?

3

Başkalarıyla çalışıyorsanız, diğerlerinin ne yaptığını görmek için taahhüt mesajları çok önemlidir: her biri için farklara bakmak çok daha fazla iştir ve birinin neden yaptığını anlayamayabilirsiniz. Başkalarıyla birlikte çalışıyorsanız ve (belki siz değil) birisinin gerçekte geriye bakması gerekiyorsa, örneğin, davranışın önceki sürümden bu yana beklenmedik şekillerde nasıl değiştiğini izlemek için ... İleti.

Yalnız çalışıyorsanız ... çoğunlukla 'olduğu gibi' kodlanmış bir projede (örneğin tek bir basit web sitesi veya komut dosyası) nereden geldiğinizi az çok görebiliyorum. Eğer böyle bir şey üzerinde çalışırsam, sadece bir şey üzerinde çalışmaya devam ederken tarih / saat veya en son değişiklikleri önemsiyorum (geri yükleme noktanız var, ancak bunu uyguladıktan sonra değil, geliştirme sırasında sadece önemli). Sürüm kontrolü, sadece birkaç artı ile yedekleme yapmanın bir yoludur - Sistemin tam olarak kullanılmadığına tamamen katılıyorum - ancak bazı küçük ölçekli projelerde gerekli olmayabilir.

Bu, Sürüm Kontrolünün biri projedeki değişiklikleri belgelemek ve diğeri yerinde geliştiricilere yardımcı olmak için iki ayrı şekilde kullanılmadan önce aklıma geldi ... ve bu ikisi birbirinden tamamen farklı. Taahhüt mesajları bir şekilde çok önemlidir ve diğerinde çoğunlukla işe yaramaz olabilir.


3

Bir şey eksik. Orada gerekir bunu yaparken olmaz bir başka şekilde taahhüt gerçekleştirmek için bir neden.

Yorumda yapmanız gereken tek şey sebebi kelimelere dökmek. wip: adding new state objects


kesinlikle. (Daha önce de belirtildiği gibi) sadece 'yinelemek istemediğiniz' kod olsa bile, açıkça bir şey anlamına gelir, bu nedenle bunun hızlı bir özetini yazmak zor olmamalıdır.
sevenseacat

2

Diğerleri gibi, boş zamanlarımda biraz kodlama yapıyorum ve hem gelişimimi hem de değişiklikleri izlemek için bir revizyon kontrol sistemi kullanıyorum. Boş zamanımın miktarı haftadan haftaya ve aydan aya büyük ölçüde değişiyor. Birçoğu, bir projeye haftalar hatta aylar boyunca kod yazmak için hiç zamanım olmayacak ve tipik olarak 10 dakika (tipik gün) ila 40 dakika (iyi gün) arasında değişecek zamanlar oldu. Bunlar kesinlikle harika koşullar değil - özellikle hata ayıklama sorunları için.

Hem kaybolmayacak hem de kolayca geri alınabilecek notları tutmak şarttı. Her oturumun sonunda, oturumun çalışması ayrıntılı bir mesajla işlenir. Daha sonra taahhüt geçmişinden geçerek ilerlememi ve düşünce sürecimi takip edebilirim. Bu, geçen hafta veya geçen ay nerede olduğumu almamı sağladı.

Göstermeye çalıştığım nokta, iyi taahhüt mesajlarının size (ve sizden sonra gelen herkese) neler olup bittiğini, neler olup bittiğini, nereye gittiğini ve her şeyden önce neden olduğunu anlamanıza yardımcı olmasıdır.


2

Bir dakikalığına mantıklı düşünün. Taahhüt ettiğinizde bu bir şeylerin yapıldığı anlamına gelir. Mesaj bırakmazsanız diğer insanlar ne yapıldığını nasıl bilecek?


İnanılmaz bariz koduma bir bakış ve yaptığı her şeyi ve% 100'ü geçtiği tüm şaşırtıcı testleri anında öğrenecekler. Üzgünüm, bu gece mizah havasındayım [bu yüzden KIDDING];)
Michael Durrant

1

Taahhütlerinize yorum yapmazsanız, kaynaktaki değişikliği yorumlamak isteyebilirsiniz. Zamanla bu, kaynağı karıştırabilir.


2
Bunu yapmak için cazip değilim

1

Taahhüt iletileri, bu check- in'e neler olduğunu bilmenin hızlı bir yoludur ve kodun hangi revizyonlarda (nedenlerden dolayı) hangi yönün değiştiğini bilmek istediklerinde ekibinizdeki diğer geliştiricilere yardımcı olacaktır.

İlgili bir notta, taahhüt mesajında hata izleyici vaka numarasını belirtmeyi öneririm (umarım birini kullanıyorsunuz), böylece ileride kolayca bir şeyler izlemeniz yararlı olacaktır.


1

Böylece bu kodun koruyucusu 1 yıl sonra o iğrenç kod için kimin avlanacağını bilir. :)


Yani ne blameVCS özelliği içindir.
Peter Taylor
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.