Manter ramos de desenvolvimento onde uma filial é um subconjunto de outra filial
-
20-09-2019 - |
Pergunta
Fundo: Eu herdei algum código MATLAB para analisar dados para o meu Ph.D. pesquisar. Para me ajudar a entender melhor o código, reduzi o código ao subconjunto mínimo de arquivos necessários para executar o código para um caso de teste de amostra.
Pergunta: Eu gostaria de comprometer este código para um sistema de controle de versão como duas ramificações, um master
ramo contendo todo o código e um minimal
Filial contendo minha versão reduzida do código e pode mesclar alterações entre essas ramificações. Como posso fazer isso?
Eu preferiria fazer isso com um único diretório de trabalho e nomeados nomeados em Git ou Mercurial, mas estou aberto a outras sugestões.
Editar: Eu pensei que tinha visto uma pergunta anterior sobre o Stack Overflow nesse sentido, e acabei de encontrar: Empurrando atualizações para um ramo mercurial podado. Em um comentário para a resposta aceita, é mencionado que o termo para o que estou tentando fazer é "clonagem estreita" e que é um trabalho em andamento para Git e Mercurial.
Solução
Git e Mercurial devem funcionar bem. Crie a filial mestre e copie -a para a ramificação mínima e retire a ramificação mínima para parecer com a implementação que você já possui (exclua todos os arquivos extras, copie os arquivos que você alterou).
A partir de então, use comandos de fusão regulares entre os ramos. Provavelmente é melhor se fundir do ramo mínimo para o ramo principal principalmente. A fusão de outra maneira é mais provável que lhe dê reclamações de que a fusão falhou (com conflitos), pois alguns dos arquivos se aplicam aos arquivos excluídos/funções removidas.