Мы разработали продукт (прототип) P_OLD на языке X и теперь переписываем его с нуля как P_NEW на языке Y.
Поскольку P_NEW и P_OLD - это один и тот же продукт:
Должен ли P_NEW быть частью P_OLD старого или это должен быть собственный репозиторий?
Как обычно обрабатывать такие большие изменения с точки зрения управления версиями?
Ответы:
Вы почти наверняка хотите новый репозиторий.
Целью хранилища является:
Если вы полностью переписываете проект с нуля, то нет смысла переписывать его в тот же репозиторий. Вы не сможете применить патчи, написанные на старом языке, к вашей перезаписи. Смена репо не приведет к исчезновению истории в старом репо, и, если вы переключитесь, у вас не будет никаких странных промежуточных этапов, когда у вас будет два языка в репо.
Единственная причина, по которой я бы даже рассмотрел сохранение хранилища при смене языков, заключается в том, что: а) языки настолько схожи, что код часто можно копировать с одного на другой без внесения каких-либо изменений, или б) у вас есть проект, в котором большая часть функционального контента в управлении версиями - это что-то вроде шаблонов на языке шаблонов, который вы сохраняете, и язык, который вы меняете, переводится построчно на другой язык (и даже тогда, если вы знаете вам нужно будет повторять шаблоны во время миграции).
источник
Я всегда сам переписываю в новые репозитории. Таким образом, сборки, тесты и развертывания могут выполняться независимо друг от друга.
Когда вы переписываете проект на другом языке, часто очень мало общего в любой из этих задач, таких как создание, запуск тестов и развертывание. Вы избавите себя от боли, если просто изолируете их в своем хранилище. Тогда вам нужно будет только беспокоиться о том, как вы собираетесь управлять переходом пользователя и данных из старой системы в новую; это всегда весело. :)
источник
Если ваши системы достаточно модульны и совместимы по ссылкам, вы сможете воспользоваться одним репозиторием и сборкой. Например, если система C переписывается на C ++, код C ++ может вызвать существующую функциональность и постепенно заменить ее.
Однако даже в этом случае некоторые могут поспорить о начале нового репо, в котором соответствующий старый код загружается по мере необходимости.
источник