Чи повинно в повідомленні git počin згадувати файл, який було змінено?


50

У першому рядку повідомлення про виконання git я маю звичку згадувати файл, який змінився, якщо зміна не охоплює декілька файлів, наприклад:

Add [somefunc] to [somefile] 

Це добре робити чи це непотрібно?

Відповіді:


84

Інструменти керування версіями досить потужні, щоб людина змогла побачити, які файли були змінені та які методи були додані. Це означає, що загалом журнали повідомлень, які явно копіюють те, що вже існує, забруднюють журнал.

Ви додали somefuncметод для виконання вимоги, тобто:

  • щоб додати функцію,
  • видалити помилку або
  • для рефакторації вихідного коду.

Це означає, що ваші повідомлення журналу повинні радше пояснювати, які функції / помилки були порушені або яка була мета рефакторингу.


5
Слід також поговорити про те, чому . Які ще варіанти ви розглянули, і чому ви вибрали саме цей?
Джей Базузі

2
Я коментую, що виконує так само, як я б коментував код, лише з точки зору вищого рівня (тобто, менше інформації, більше резюме). Особисто я розбиваю його на рівень файлу / модуля (в git), але тільки тому, що комісії дешеві наперед, і мені подобається читати історію, як книга. YMMV.
Еван Плейс

1
Якщо з якихось причин людина одночасно робить купу файлів, які не пов’язані з однією і тією ж помилкою, я вважаю за краще перелічити імена файлів та ідентифікатор помилок до початку літа. Мені не потрібно знати file.cpp: додано getMethod (), але я хотів би помилку id # 10 file.cpp: тут пристойний літній. Якщо вони зроблять купу файлів, які розповсюджуються на кілька звітів про помилки, ми поговоримо, оскільки мені це не дуже подобається. Я набагато краще, щоб вони зробили кілька комітетів. По одному для кожної проблеми, яку вони вирішують.
Вільям

@William: Крім того, якщо виникла проблема з одним виправленням помилок, можна повернути її з мінімальною суєтою. Поєднайте десять виправлень помилок за один комікт, і це може бути серйозною проблемою.
Девід Торнлі

59

Ні. Існує маса способів вивчення вмісту комітету. У коментарі має бути описана мета комісії.


30

Не забудьте додати номер БІЛЕТУ / ВИДАЛИ .

Якщо у вас є якась функція або проблема системи відстеження з квитком № або випуском # , обов'язково введіть цей ідентифікатор № в комісію. Це допоможе всім, хто хоче дізнатися більше про функцію чи проблему, над якою працювали.

У моєму останньому проекті був макрос, який був розроблений, щоб переконатися, що перші 7 цифр коментаря є дійсним номером випуску з чіткого квесту (наша система відстеження випусків / особливостей).


Яким чином ви здійснюєте зміну рефакторингу?
Жуль

@Jules refactoring має квиток #, який ніколи не закінчується
Калет

@Jules Однією з методологій є те, що рефакторинг відстежується як проблема «рутинної роботи», і тому він також має номер випуску.
Скотт Макінтайр

@ScottMcIntyre Хоча це може бути правдою, я не переконаний, що це гарна ідея. Рефакторинг часто найкраще проводити опортуністично або як частина процесу розробки коду, який покладається на код, який потрібно реконструювати. Як стверджує Фоулер , "Плановий рефакторинг є [...] ознакою того, що команда не зробила достатньо рефакторингу, використовуючи інші робочі процеси". Або ще більш прямо: Рон Джеффріс: Рефакторинг - не на відставання! .
Жуль

3

Я роблю такий тип речей, коли я здійснюю, наприклад, виправлення дефекту, який потребував змін у декількох файлах. Це дозволяє трохи простіше розповісти, що насправді змінилося, не дивлячись на окремі файли в наборі змін.

Для наборів змін одного файлу це зайве.

Перший рядок - це завжди опис набору змін на високому рівні, як посилання на дефект або історію користувача.


3

Якщо це відповідна інформація в розповіді повідомлення про вчинення, то так, включіть її. Якщо єдиним бітом інформації є саме ім'я файлу, то ні.

Наприклад, це має сенс: "Переміщено функцію build_foo () з fooutil.c на foobase.c, оскільки більшість програм, які хочуть використовувати build_foo (), вже включають foobase.c"

У цьому немає: "Оновлено build_foo () у fooutil.c, щоб взяти параметр bar."


1

Я хочу додати тут іншу точку зору.

Моя відповідь - Так чи ні. Але, як правило, я б сказав так.

Контроль версій дійсно досить потужний, щоб знати, який файл оновлюється. Але, коли ми це робимо

$ git log

Ми бачимо лише повідомлення про фіксацію. Те, що робить більшість людей.

Заглянувши в сам журнал. Це додає йому додатковий контекст. Наприклад:

readme.md: Fix typo detected by language tool

Краще, ніж

Fix typo detected by language tool

Однак якщо зміни породили кілька файлів, то принаймні згадуйте компонент, який редагується.

API: Fix reset password not sent email to user

Читаючи його, ми знаємо, що виправлена ​​помилка є в компоненті API, і це, ймовірно, в каталозі API на базі коду.

Однак ми могли б це зробити

$ git show COMMIT_ID --name-only 

але це додає ще крок лише для отримання файлів.


0

Єдиний раз, коли я можу побачити, що це корисно для однієї перевірки файлів, це якщо ви внесли зміни до функції, яка використовується у багатьох місцях у файлі, в результаті чого розбіжність забита. Вже тоді я б поклав спочатку трекер змін # та звичайний текстовий опис змін.


-1

Я думаю, що справжнє питання полягає в тому, наскільки обмежені в обсязі ваші зобов'язання? Якщо ви зачекаєте разом здійснити різноманітні незв’язані зміни за один комітет, то, можливо, ви відчуєте необхідність вказати, які файли були змінені з якою метою.

Однак якщо ви просто зробили більш вузькі коміти частіше, то одна фіксація пояснювала б, які файли були змінені, і ви можете просто описати, яка мета була у повідомленні.

Більше комісій, частіше. Ось так ви можете уникнути настільки багатослівних у своїх повідомленнях.


-2

Це не повинно

Усі, хто цікавиться, можуть бачити зміни в історії

Це також неможливо у великих системах, оскільки багато файлів можуть бути створені автоматично

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.