Добавить зависимости в отдельном коммите?(лучшие практики) - PullRequest
0 голосов
/ 01 апреля 2012

Скажем, я добавляю некоторые новые функции в существующий модуль C (это может быть любой язык, но мы будем использовать C в качестве примера). Допустим, модуль представляет собой двоичное дерево поиска, и я хочу добавить три новые функции: preOrder (), postOrder () и inOrder (), каждая из которых пересекает дерево (по-разному) и печатает данные в каждом узле. Скажем также, что каждая из этих функций зависит от новой зависимости, назовите ее libprettyprint.

Чтобы добавить новую зависимость в проект, мне нужно добавить строку #include в реализацию модуля (файл .c) и отредактировать некоторые правила Makefile.

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

Путь первый: Я хотел бы добавить #include, изменить make-файл и написать свою первую функцию. Тогда я бы совершил это. Затем я написал бы две другие функции и зафиксировал каждую из них отдельно. (Всего 3 коммитов)

Второй способ: Я мог бы сделать действительно небольшой коммит с только #include и измененным Makefile, а затем зафиксировать три функции в трех отдельных коммитах. (Всего 4 коммитов)

Путь один кажется мне хуже, потому что, если сопровождающий проекта / мой босс отклонил первый коммит, но принял два других, они удалили бы #include и отредактированный Makefile, а два других коммита не смогли бы скомпилироваться. Два способа это исправить.

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

1 Ответ

2 голосов
/ 01 апреля 2012

Из моего POV, вы

  • Забыл путь 0
  • Необходимо всегда помнить: используемый способ тяжелый зависит от рецензента и привычек (то, что хорошо в одном месте, плохо в другой команде)

Я (лично) предпочитаю пользоваться и рад видеть со стороны коллег-сотрудников The Way Zero :

Логическая задача, полностью включенная в один логически завершенный коммит. Вы добавили три функции, для этого требуется: 1) включить 2) изменить make-файл 3) добавить файл lib 4) новые функции в исходном коде ?! Хорошо, сделайте все в одном коммите, чтобы рецензент мог просмотреть только один коммит и не мог искать "зависимый".

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

...