Каков наилучший способ управления версиями крупномасштабного рефакторинга?
Мой типичный стиль программирования (на самом деле и написание документов) - вывести что-то как можно быстрее, а затем выполнить рефакторинг. Как правило, рефакторинг происходит одновременно с добавлением других функций. Помимо стандартного рефакторинга классов и функций, функции могут перемещаться из одного файла в другой, файлы разделяются и объединяются или просто переупорядочиваются.
В настоящее время я использую контроль версий как одинокого пользователя, поэтому на данном этапе не возникает проблем с взаимодействием с другими разработчиками. Тем не менее, контроль версий дает мне два аспекта:
- Резервное копирование и возможность возврата к хорошей версии «на всякий случай».
- Взгляд на историю говорит мне, как продвигался проект и поток идей.
Я использую Mercurial на окнах, используя TortoiseHg, который позволяет выборки фрагментов для фиксации. Причина, по которой я упоминаю об этом, заключается в том, что я хотел бы получить совет о степени детализации коммита в рефакторинге. Должен ли я отделить рефакторинг от функциональности, добавленной всегда при фиксации?
Я посмотрел ответы Рефакторинг и контроль источников: как? , но он не отвечает на мой вопрос. Этот вопрос направлен на сотрудничество с командой. Эта статья посвящена созданию истории, которая будет понятна в будущем (при условии, что я не переписываю историю, как это допускают некоторые VCS).