Вы забыли третий вариант:
- переписать программное обеспечение на месте, не создавая новую папку.
Вы используете контроль версий именно так, что вам не нужно создавать папки для каждой версии.
Чтобы немного расширить вышесказанное: если новая система радикально отличается от старой системы - полное переписывание, как вы говорите - тогда я, вероятно, использовал бы новый репозиторий. Если переписывание будет более инкрементным, я сохраню существующий репозиторий.
Добавьте тег, когда вы начнете перезапись или выполните перезапись в выделенной ветви , чтобы вы могли отслеживать, где заканчивается старый код и где начинается новый код. С распределенной системой контроля версий, такой как Mercurial или Git, вы можете просто создать еще один клон на своем сервере для перезаписи.
Ветки - очень мощный инструмент. Я написал учебник для Mercurial о ветках , который может вас заинтересовать. Там вы видите, что Алиса и Боб работают параллельно над несколькими ветвями. В вашем случае вы все равно сможете добавить материал к старому коду, работая над новым кодом.