Estou usando o Fossil-SCM para manter meus projetos. Como não trabalho em equipe, geralmente tenho apenas um ramo de desenvolvimento muito linear: 1.0 -> 1.1 -> 1.2
Gostaria de saber qual é o procedimento quando você tem um projeto cuja tarefa está prestes a ser atribuída a um projeto relacionado. E, assim, tornando o primeiro projeto obsoleto. Embora eu tendem a reescrever a maior parte do meu código, se não me lembro de já ter escrito, eu ainda gostaria de manter o código arquivado. E prefiro não ter um repositório fóssil que está morto. Posso mesclar isso? Essa é a maneira correta de lidar com isso?
Por exemplo, o código estava extraindo dados de um arquivo do Excel para formatar uma página HTML. Agora, convenci meu empregador a mover sua planilha do Excel para um banco de dados para diminuir a redundância, aumentar a eficiência e o yaddy yadda. Como agora posso fazer consultas lógicas que não precisam ser executadas usando o banco de dados, não precisarei dos arquivos vbs extras que originalmente manipularam o arquivo do Excel. Tecnicamente, eu estaria portando parte do código existente no novo projeto atual.
Como ele já possui seu próprio tronco, seria aconselhável combinar o tronco de um projeto diferente deste, e como eu faria exatamente isso?
Então eu acho que minha árvore ficaria assim, e eu nunca vi exemplos de ramificação de software que se assemelham a essa árvore invertida antes, então estou me perguntando qual é a norma para uma situação como essa?
Respostas:
A melhor forma de mesclar projetos depende um pouco de como você deseja gerenciar o histórico deles e se espera que eles continuem evoluindo separadamente.
Mantenha-os separados - use externos / submódulos
Uma técnica muito boa a considerar seria a dos submódulos. Git e svn têm esse conceito (chamado externals in svn), mas infelizmente parece fóssil ( https://www.mail-archive.com/[email protected]/msg14798.html )
Mas a idéia é que você pode ter um projeto DEPEND em outro projeto e apenas seleciona qual ramificação, tag ou confirmação individual daquele outro projeto que deseja usar no projeto de referência.
Apenas copie
Se você quiser apenas levantar um monte de código e NÃO se importar com o histórico, basta adicionar uma pasta com o novo código e confirmar.
Basta copiar, mas preservar o histórico antigo
Se você deseja mesclar o código do segundo projeto no primeiro e preservar o histórico, com pelo menos o git, use o git merge (consulte https://saintgimp.org/2013/01/22/merging-two-git -repositórios-em-um-repositório-sem-perder-histórico-de-arquivo / por exemplo). O git permite direcionar outros repositórios como a fonte de dados para mesclar (é basicamente assim que o git pulls funciona). Não sei o suficiente sobre fósseis para saber se a fusão fóssil pode ser usada dessa maneira.
fonte