Qual é a maneira correta de mesclar dois projetos no software de controle de origem

8

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? Ele se funde em 1,8 !!

Malva
fonte
4
O som é que você está complicando demais as coisas. O que há de tão ruim em "um repo fóssil que está morto"? Substitua "morto" por "arquivado" e ele não soa mais tão negativo.
Doc Brown
4
Já fiz isso antes com a Mercurial, meu conselho seria marcar o projeto antigo como arquivado em algum momento e copiar os recursos necessários para o novo, porque se você realmente não precisa da história antiga, não é necessário mesclar os dois projetos.
Timoteo Ponce 07/07
O que impede você de se fundir? E mesmo se você se fundir, o baú antigo ainda estará lá. Mesclando não remove ramos, ele só se funde arquivos do ramo Um em galho B.
Nickl
Acho que o que me impede de me fundir é que tenho dois fósseis diferentes a.fossil e b.fossil, então não tenho certeza de como obteria toda a história e informações de check-in para estar presente no segundo fóssil. Agora que sou muito mais velho, acho que a pergunta é: como você mescla dois repositórios em um.
Mallow

Respostas:

1

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.

Lewis Pringle
fonte