Desenvolvemos um produto (protótipo) P_OLD no idioma X e agora o reescrevemos do zero como P_NEW no idioma Y.
Como P_NEW e P_OLD são o mesmo produto:
P_NEW deveria ter apenas um Pach de idade de P_OLD ou deveria ser seu próprio repositório?
Qual é a maneira usual de lidar com essas grandes mudanças na perspectiva de controle de versão?
Respostas:
Você quase certamente quer um novo repositório.
O objetivo do repositório é:
Se você estiver reescrevendo totalmente um projeto do zero, não faz sentido colocar a reescrita no mesmo repositório. Você não poderá aplicar patches escritos no idioma antigo à sua reescrita. A troca de repositórios não fará com que a história do repositório antigo desapareça e, se você alternar, não terá etapas intermediárias estranhas, nas quais haverá dois idiomas em seu repositório.
O único motivo pelo qual eu consideraria manter o repositório ao alterar idiomas seria se: a) os idiomas forem tão semelhantes que o código possa ser copiado e colado de um para o outro sem fazer alterações; ou b) você tenha um projeto no qual a maioria do conteúdo funcional no controle de versão é semelhante a modelos em um idioma de modelo que você está mantendo, e o idioma do núcleo que você está alterando é traduzido linha por linha para outro idioma (e mesmo assim somente se você souber você precisará continuar iterando os modelos durante a migração).
fonte
Eu sempre coloco reescritas em novos repositórios. Dessa forma, as compilações, testes e implantações podem ser feitos de forma independente.
Quando você reescreve um projeto em outro idioma, geralmente há muito pouca semelhança em qualquer uma dessas tarefas, como construção, execução de testes e implantação. Você economizará a dor se apenas os isolar em seu próprio repositório. Então, você só precisa se preocupar com a dificuldade de gerenciar o usuário e a transição de dados do sistema antigo para o novo; isso é sempre uma coisa divertida. :)
fonte
Se seus sistemas forem suficientemente modulares e compatíveis com link, você se beneficiaria de um único repositório e construção. Por exemplo, se o sistema C estiver sendo reescrito em C ++, o código C ++ poderá chamar a funcionalidade existente e substituí-la gradualmente.
No entanto, mesmo nesse caso, alguns podem argumentar para iniciar um novo repositório no qual o código antigo relevante é extraído conforme necessário.
fonte