Каков правильный рабочий процесс для серьезных изменений в git?

В настоящее время я работаю над капитальным ремонтом системы электронной почты в рамках небольшого проекта Django.

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

1) Должен ли я комментировать старый код или перезаписывать его?

2) должен ли я удалить старые файлы или переименовать их во что-то неиспользуемое?

3) что является обычной практикой, когда речь идет о капитальных ремонтах в git?

2 ответа

  1. Это зависит, если вы уверены, что не хотите использовать свой старый код в будущем, сделали новую ветвь и изменяет все. Но если вы не уверены, я бы воссоздал хранилище. Это будет проще. Но вы также можете сделать реверты. Это личный выбор. Я бы создал новое РЕПО.

  2. Вы заявили, что начать с нуля может быть проще, но вы могли бы рассмотреть, если более инкрементный подход возможен. Если это не очень маленькая программа, ваш дизайн, вероятно, будет разбит на несколько подсистем/компонентов. Возможно, есть один или два без существенных зависимостей, с которых вы можете начать; сначала заставить их работать с модульными тестами, а затем рефакторировать старую базу кода, чтобы использовать их. При рефакторинге удалите все старые cruft на смену приходит новая логика. Как указано в другом месте, ваше хранилище должно предоставлять историю; неиспользованный или закомментированный код делает вашу базу кода более запутанной.

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