Git taahhüt mesajı değiştirilmiş olan dosyayı belirtmeli mi?


50

Git tescil mesajının ilk satırında, bir değişiklik birden fazla dosyaya yayılmazsa değiştirilen dosyayı belirtme alışkanlığım var, örneğin:

Add [somefunc] to [somefile] 

Bu yapmak için iyi bir şey mi yoksa gereksiz mi?

Yanıtlar:


84

Sürüm kontrol araçları, kişinin hangi dosyaların değiştirildiğini ve hangi yöntemlerin eklendiğini görmesine izin verecek kadar güçlüdür. Genel olarak, zaten var olanı doğrudan kopyalayan günlük mesajlarının, günlüğü kirlettiği anlamına gelir.

somefuncBir gereksinimi yerine getirmek için yöntem eklediniz , yani:

  • bir özellik eklemek
  • bir hatayı kaldırmak
  • kaynak kodunu yeniden yansıtmak için.

Bu, günlük mesajlarınızın hangi özelliklerin / hataların etkilendiğini veya yeniden yapılanmanın amacının ne olduğunu açıklamak zorunda olduğu anlamına gelir.


5
Ayrıca neden hakkında da konuşmalı . Başka hangi seçenekleri düşündünüz ve neden bunu seçtiniz?
Jay Bazuzi,

2
Ben sadece yorumda bulunduğum gibi, sadece daha yüksek bir perspektiften (yani daha az bilgi, daha fazla özetleme) yorum yaptığımı taahhüt ediyorum. Şahsen, bir dosya / modül seviyesine (git halinde) ayırırım, ancak yalnızca taahhütler ucuz olduğu için ve tarihi bir kitap gibi okuyabilmeyi severim. YMMV.
Evan Plaice

1
Herhangi bir sebepten dolayı, kişi aynı hatayla ilgili olmayan bir kerede bir sürü dosya işlediyse, yazlıktan önce dosya adlarını ve hata kimliklerini listelemelerini tercih ederim. File.cpp: getMethod () öğesini eklememe gerek yok, ancak hata kimliği # 10 file.cpp: decent summery here istiyorum. Birden fazla hata raporuna yayılmış bir sürü dosya işledikleri takdirde konuşacağız, çünkü gerçekten hoşuma gitmiyor. Çok fazla taahhütte bulunmayı tercih ederim. Çözdükleri her konu için bir tane.
William

@William: Ayrıca, bir hata düzeltme ile ilgili bir sorun varsa, en az telaş ile geri dönmek mümkündür. On hata düzeltmesini bir taahhütte birleştirin ve bu ciddi bir problem olabilir.
David Thornley

59

Hayır . Bir taahhüdün içeriğini incelemenin birçok yolu vardır . Yorum , taahhüdün amacını açıklamalıdır .


30

BİLET / SAYI SAYISI eklemeyi unutmayın .

Bilet # veya sorun # ile herhangi bir özelliğiniz veya sorun takip sisteminiz varsa , söz konusu kimliği # taahhüt altına aldığınızdan emin olun. Bu, üzerinde çalıştığınız özellik veya sorun hakkında daha fazla bilgi edinmek isteyen herkese yardımcı olacaktır.

Son projemde, yorumun ilk 7 hanesinin açık bir sorgudan (sayı / özellik izleme sistemimiz) geçerli bir sayı olduğundan emin olmak için geliştirilen bir makro vardı.


Öyleyse bir yeniden düzenleme değişikliğini nasıl yaparsınız?
Jules

@Jules refactoring hiçbir zaman bitmeyen bir bilet # 'a sahip
Caleth

@Jules bir metodoloji, refactoring'in “angarya” bir tür sorun olarak izlenmesi ve bu yüzden de bir sayıya sahip olmasıdır.
Scott McIntyre

@ScottMcIntyre Bu doğru olsa da, bunun iyi bir fikir olduğuna ikna olmadım. Yeniden düzenleme, en iyi şekilde fırsatçı olarak veya yeniden yapılandırılacak koda dayanan kod geliştirme sürecinin bir parçası olarak gerçekleştirilir. Fowler'ın belirttiği gibi , "Planlı yeniden yapılanma [...], ekibin diğer iş akışlarını kullanarak yeterince yeniden yapılanma yapmadığının bir işaretidir". Ya da daha doğrusu Ron Jeffries tarafından: Refactoring - Backlog'da değil! .
Jules

3

Bu tür şeyler yapıyorum, örneğin birden fazla dosyada değişiklik yapılması gereken bir hatayı düzeltmek için. Bu, değişiklik setindeki ayrı dosyalara bakmadan gerçekte neyin değiştiğini söylemenizi biraz kolaylaştırır.

Tek dosya değişiklik kümeleri için bu gerekli değildir.

İlk satır, kusur veya kullanıcı öyküsüne bir bağlantı gibi, her zaman değişiklik kümesinin üst düzey bir açıklamasıdır.


3

Taahhüt mesajının anlatımında ilgili bilgiler ise, evet, onu ekleyin. Bilginin tek biti dosya adının kendisi ise, hayır.

Örneğin bu mantıklı: "build_foo () işlevini fooutil.c'den foobase.c'ye taşıdı, çünkü build_foo () işlevini kullanmak isteyen çoğu program zaten foobase.c'yi içeriyor"

Bu değil: "Bir bar parametresi almak için fooutil.c içindeki build_foo () güncellendi."


1

Buraya farklı bir bakış açısı eklemek istiyorum.

Cevabım Evet Veya Hayır. Ama Genel olarak Evet diyebilirim.

Sürüm kontrolü gerçekten hangi dosyanın güncellenmekte olduğunu bilecek kadar güçlü. Ama ne zaman yaparız

$ git log

Sadece taahhüt mesajını görüyoruz. Çoğu insan böyle yapar.

Kütüğün içine bakarak. Ek bağlam içeriyor. Örneğin:

readme.md: Fix typo detected by language tool

Daha iyi

Fix typo detected by language tool

Bununla birlikte, değişiklikler birden fazla dosya oluşturursa, en azından düzenlenmekte olan bileşenden bahsedin.

API: Fix reset password not sent email to user

Bunu okuyarak, düzeltilen hatanın API bileşeninde olduğunu ve muhtemelen kod tabanında API dizini altında olduğunu biliyoruz.

Ancak yapabiliriz

$ git show COMMIT_ID --name-only 

ancak sadece dosyaları almak için daha fazla adım ekler.


0

Bunu tek bir dosya incelemesi için yararlı bulabildiğim tek zaman, dosya içindeki birçok yerde kullanılan bir işlevde, farkın dağınık olduğu sonucu değişiklik yapmanızdı. O zaman bile, değişiklik izleyicisini # ve ilk önce değişikliğin düz metin açıklamasını koydum.


-1

Bence asıl soru, taahhütlerinizin kapsamı açısından ne kadar sınırlı olduğu? Bir ilişkide çeşitli ilişkili olmayan değişiklikleri bir araya getirmeyi beklerseniz, hangi dosyaların hangi amaçla değiştirildiğini belirtme gereksinimi duyabilirsiniz.

Bununla birlikte, sadece daha dar bir taahhütte bulunursanız, o zaman tek bir taahhüt size hangi dosyaların değiştirildiğini ve mesajdaki amacın ne olduğunu açıklayabilecektir.

Daha fazla taahhüt, daha sık Mesajlarında bu kadar ayrıntılı olmaktan kaçınmanın yolu budur.


-2

Olmamalı

İlgilenen herkes tarihte değişiklikler görebilir

Ayrıca, birçok dosya otomatik olarak oluşturulduğundan, daha büyük sistemlerde uygulanabilir değildir.

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.