Стоит ли брать на себя обязательство исключительно для устранения некритических опечаток?

67

Если я сталкиваюсь с некритической опечаткой в ​​коде (скажем, с ошибочным апострофом в операторе print (error)), стоит ли делать коммит для устранения этой ошибки или ее просто нужно оставить в покое?

В частности, мне любопытно сопоставить суммирование журнала коммитов со значением разрешения этих некритических опечаток. Я склоняюсь к их решению. Я педантичен?

Кристофер Берман
источник
40
Если тривиальный коммит что-то затуманивает, вам нужно либо вкладывать средства в более совершенную VCS, лучшие инструменты фильтрации журналов или лучшие методы для уведомления о различных степенях исправления.
Рекс Керр
@ root45 Хотя, если вы посмотрите на результаты, они все другого типа, чем этот вопрос.
Изката

Ответы:

130

Лично я считаю, что улучшение качества стоит небольшого неудобства, связанного с дополнительной записью в журнале коммитов, даже для небольших улучшений. В конце концов, небольшие улучшения имеют большое значение, когда вы учитываете эффект разбитого окна .

Возможно, вы захотите добавить к TRIVIAL:тегу префикс или пометить его как тривиальный, если ваш VCS поддерживает его.

thiton
источник
72
Просто хочу добавить, что я бы предпочел, чтобы подобные вещи были бы совершены отдельно, а не смешаны с чем-то другим. Проблема с сосредоточением заключается в том, что слишком много шума может отвлечь рецензента кода от соответствующих изменений. +1
Энди
9
+1 за упоминание эффекта разбитого окна. Маленькие вещи имеют значение. Если все действительно чисто, люди дважды подумают, прежде чем писать небрежно написанный или непроверенный код.
Рой Тинкер
25
Кроме того, если вы добавляете в него функцию, затем отыгрывайте функцию, которую вы потеряли. Совершите одну вещь за один раз.
Ctrl-Alt-Delor
4
Мне было бы очень интересно, какие VCS позволяют пометить комментарий как тривиальный. Я работал с SVN, Hg и Git, и ничего подобного не заметил ни в одном из них.
Сион
3
@ И этот шум не самая плохая часть ... если кто-то позже решит, например, отменить этот коммит, потому что он не хочет эту функцию, внезапно вы также потеряете небольшое улучшение, которое было частью коммитов.
rFactor
49

Вы не педантичны, и лучше решать их индивидуально. Чем более атомарны изменения, тем лучше - вы не хотите, чтобы исправление сбойной ошибки было перепутано с 500 изменениями комментариев / опечаток.

jmoreno
источник
9
+1 Каждая ревизия должна относиться только к одному конкретному исправлению. Это становится NIGHTMARE для бэкпорта исправлений, если каждая ревизия также имеет несколько случайных опечаток, зафиксированных между реальными изменениями.
Грант
28

В общем случае: да

Это всегда стоит того , чтобы повысить эксплуатационную надежность Вашего программного обеспечения.

Просто пойти на это.

Если вы собираетесь отправить релиз ...

... и если вы не лидер команды, то посоветуйтесь с ним .


Относительно содержимого журнала фиксации ...

Я согласен с другими, что вы должны по крайней мере написать что-то, чтобы отличать это от «функциональных» коммитов, если речь идет только об исправлении отдельной опечатки.

Обычная практика - иметь в своем трекере несколько вечных задач, чтобы отслеживать бесконечные и бесконечные изменения. Например, весьма обычно иметь задачу для:

  • большие автоматизированные безвредные очистки (очистка пробелов),
  • охота за грамматикой и опечатками,
  • модификации системы сборки,
  • и т.д...

Только будьте осторожны, чтобы они не использовались в качестве одноразовых идентификаторов задач для чего-либо, когда людям лень создавать правильно документированные заявки. Особенно, если вы отклоняете коммиты, которые не связаны с идентификатором (что хорошо, но такие большие задачи будут еще более привлекательными для ленивых разработчиков).

haylem
источник
7
Проверяешь с лидером своей команды для исправления опечатки? Если бы я был руководителем группы, который был обеспокоен предстоящим выпуском, я бы не хотел, чтобы меня беспокоили такие мелочи.
Джох
2
@Joh: дело не в том, что вы обязательно можете нарушить сборку, но могут быть другие задания сборки, или они могут быть уже помечены и готовы к использованию, и ваши средства контроля аудита (в зависимости от вашей отрасли) могут заставить вас связать этот безобидный коммит к задачам и требованиям, поэтому, если это происходит из ниоткуда, это может быть просто головной болью; который вы можете легко сохранить в течение нескольких дней после выхода релиза. Но в целом я бы с вами согласился и даже сказал бы, что такая компания делает это неправильно. Но вы не тот, кто это исправит, так что управляйте им, если вы не старший.
Хайлем
2
@Joh: в принципе, если руководитель моей команды увидит, что новая сборка внезапно подпрыгивает в системе сборки, когда он собирается начать новую сборку (или уже запустил ее), то я могу заверить вас, что его уровень стресса повысится с помощью этого подхода а также ...
Хайлем
7

Опечатки должны быть добавлены как коммит. Исправление слов с ошибками или грамматических ошибок повысит читабельность вашего кода.

Использование сообщения фиксации, такого как «Фиксированная опечатка» или «Фиксированная опечатка в file.c», поможет вам отличить эти коммиты от других коммитов с основным кодом.

Тревор
источник
7

Да, вы должны сделать это, особенно в начале проекта.

Почему? Два момента:

  1. Вы, вероятно, не будете знать, является ли опечатка "критической" или нет, пока не станет слишком поздно. Некоторые исправления, вероятно, не исправлены, потому что все думают, что это не будет иметь большого значения. Пока это не так.

  2. Исправить опечатку на раннем этапе и преднамеренно будет гораздо проще, чем исправить ее после того, как было сделано несколько сотен строк вызовов кода / функции. Опять же, временные хаки могут стать полупостоянными на удивление быстро. Вот почему мне приходится иметь дело с объектами, которые имеют методы "CollapseAll" и "ColapseAll".

joshin4colours
источник
2
Да - из всех правильных ответов мне больше всего нравится этот, чтобы упомянуть, что это зависит от «когда».
Вонко вменяемый
4

Что касается грамматических ошибок, которые могут видеть конечные пользователи, то да, во что бы то ни стало, стоит сделать коммит, поскольку вполне возможно, что пользователь или QA могут прийти и сообщить об ошибке, и ее необходимо будет отследить. Если это уже исправлено, это может ускорить время, необходимое для решения проблемы.

Если это грамматическая ошибка в комментариях вокруг кода, я бы ничего не сделал, если бы она не была частью изменений в реальном коде, и в этом случае вы обновляете документацию кода.

rjzii
источник
3

Если вы беспокоитесь о склеивании журнала коммитов, значит, вы делаете что-то не так. :-) Частые коммиты - это хорошо! Я постоянно исправляю опечатки. Получить их в кодовой базе как можно скорее и ускорить цикл разработки!

Брайан Кноблаух
источник
2
I commit typo fixes all the timeИМО, что беспокоит, попробуйте найти программистов с лучшим английским?
Ли Райан
Я возьму то, что ты можешь получить в эти дни. Поиск программистов, которые вообще могут написать работоспособный код, является серьезной проблемой!
Брайан Кноблаух
2

Я голосую за. Зарегистрируйте их. Я работал в компании, которая ненавидела людей, проверяющих вещи. Я имею в виду почти все. Обзоры кода были обширными, и поэтому, если вы отметили изменение, которое просто исправило опечатку, вы застонали. Вы можете представить себе состояние кода. На самом деле код не был ужасным, но он сочился как патока, а не как вино.

Ян
источник
0

Ваш процесс управления изменениями позволяет это?

В моей среде каждый коммит, который я делаю, должен быть привязан к запросу на изменение, который был запрошен либо бизнес-пользователями, либо к обязательному изменению на уровне системы, с соответствующими процессами тестирования конечного пользователя. Простая опечатка, которую вы описываете, вероятно, не будет зарегистрирована как одна из этих (я обнаружил опечатки и грамматические ошибки в одном из моих приложений, которые существовали более 4 лет, и никто не заметил), поэтому, если / когда пришли аудиторы звонить мне было бы очень сложно объясниться.

Я бы сохранил изменение, как вы описываете (и на самом деле оно есть - фактически, имя метода неправильно написано, и я его только что обнаружил) на время, когда у меня есть «настоящее» изменение, которое необходимо сделал так же и поставил "исправил различные опечатки" в журнале.

alroc
источник
+1 В некоторых средах это правда. Пожалуйста, не понижайте голос только потому, что это не так, где вы работаете.
MarkJ
-1 ваш процесс управления изменениями , кажется, сосать большое время . Я бы понял (и даже предпочел бы ), что каждый коммит должен быть связан с запросом на изменение - эта часть вашего процесса выглядит нормально. Но, OMG, похоже, что запросы, инициированные разработчиком (например, рефакторинг опечаток this / fix в этом ) запрещены, что вызывает у меня большой красный флаг . Это предполагает, что бизнес-пользователи / аудиторы всегда знают лучше, чем разработчики - если это когда-либо будет близко к истине, то они сами напишут код
gnat
Если разработчик сможет убедить людей, которые одобряют продвижение вперед, в изменения, которые им стоит сделать, тогда они могут двигаться вперед. Но если я найду простую опечатку в имени метода или найду код, который будет скопирован / вставлен и который должен быть преобразован в метод, я не смогу внести изменения без авторизации. Это не просто «делать правильные вещи с помощью кода» - необходимо провести приемочное тестирование, и разработчики не могут сказать деловым людям: «Я сделал это изменение, вы никогда не заметите, что я сделал, но вы должны пройти тестовый цикл. "
Alroc
@alroc, что «если-может-убедить» просто скрывает контрпродуктивный процесс под разумно выглядящей поверхностью. Требование убедить бизнес / аудит в больших изменениях, в согласованных контрольных точках / выпусках и т.д. Потратить несколько часов / дней, чтобы оправдать усилия, на которые уходит неделя разработки и тестирования, это утомительно, но справедливо, хорошо. Но форсировать это для каждого исправления орфографии или метода извлечения ... дайте мне перерыв - это не что иное, как бездумный контроль, вставленный на неправильной стадии в неподходящее время
комнат
Позвольте мне попытаться объяснить это снова. Если я могу исправить опечатку или извлечь метод, работая над другим, одобренным изменением, я могу вставить его, не продавая никому. Но я не могу внести изменения, которые не видны пользователям и не окажут прямого положительного влияния на бизнес / пользователей, не продав в первую очередь тех полномочий, которые на них влияют.
Alroc
-1

Используйте DVCS для редактирования истории

Если вас беспокоит чистая история коммитов, подумайте над выполнением основной работы в функциональных ветках . Если вам довелось работать с распределенной VCS , вы можете легко отредактировать историю коммитов, прежде чем отправлять ее в основную ветку. Если вы работаете в SVN, попробуйте Git - он может двунаправленно взаимодействовать с Subversion, и вы также можете редактировать историю до фактической фиксации в Subversion.

Иметь здравый смысл в противном случае

Если вы не хотите или не можете редактировать историю коммитов, то нет функциональной причины делать ранний или атомарный коммит для незначительной опечатки , которая не влияет на автоматические тесты или компиляцию . В этом случае, на мой взгляд, чистота истории коммитов должна быть важнее, чем выполнение атомарных коммитов. Сочетание одной или двух опечаток с «обычной» модификацией не повредит ни одному потенциальному процессу проверки. Однако вы можете сгруппировать несколько тривиальных исправлений в один коммит, возможно, при «очистке» после большого сеанса кодирования.

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

Общий тон ответов здесь, кажется, предлагает стратегию «сделай все быстро» даже для незначительных опечаток. Я склонен не соглашаться и приветствовать обсуждение.

krlmlr
источник