Скажем, я добавляю некоторые новые функции в существующий модуль C (это может быть любой язык, но мы будем использовать C в качестве примера). Допустим, модуль представляет собой двоичное дерево поиска, и я хочу добавить три новые функции: preOrder (), postOrder () и inOrder (), каждая из которых пересекает дерево (по-разному) и печатает данные в каждом узле. Скажем также, что каждая из этих функций зависит от новой зависимости, назовите ее libprettyprint.
Чтобы добавить новую зависимость в проект, мне нужно добавить строку #include в реализацию модуля (файл .c) и отредактировать некоторые правила Makefile.
Я собираюсь поместить каждую из трех моих новых функций в отдельные коммиты, чтобы их можно было легко принять, а измененную руду отвергнуть вверх по течению. Но есть как минимум два разных способа борьбы с новой зависимостью:
Путь первый:
Я хотел бы добавить #include, изменить make-файл и написать свою первую функцию. Тогда я бы совершил это. Затем я написал бы две другие функции и зафиксировал каждую из них отдельно. (Всего 3 коммитов)
Второй способ:
Я мог бы сделать действительно небольшой коммит с только #include и измененным Makefile, а затем зафиксировать три функции в трех отдельных коммитах. (Всего 4 коммитов)
Путь один кажется мне хуже, потому что, если сопровождающий проекта / мой босс отклонил первый коммит, но принял два других, они удалили бы #include и отредактированный Makefile, а два других коммита не смогли бы скомпилироваться. Два способа это исправить.
Мой вопрос заключается в том, стоит ли в реальном мире дополнительных усилий всегда использовать Второй путь? Или это только усложняет журналы фиксации и тратит время?