Por que git svn dcommit perder a história de commits de mesclagem para agências locais?

StackOverflow https://stackoverflow.com/questions/425766

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu tenho um repositório git local, criado com git svn clone. Eu faço uma filial local, fazer algumas alterações, voltar ao mestre, git svn rebase e se está tudo bem, eu mesclar meu ramo de volta ao mestre. Em seguida, a árvore é algo como isto:

alt texto http://img.skitch.com/20090108-cjguu3hcci9x2k17mcftamw8f1.jpg

Às vezes, mais tarde, quando eu git svn rebase novamente e obter algumas alterações remotas, ele perde o fato de que a_branch foi incorporada pela linha principal e os olhares de árvores como este:

alt texto http://img.skitch.com/20090108-kn3bn1qgi5ijw8ja5ijkd75pa3.jpg

Por que isso? Eu posso parar com isso? Existe uma maneira fácil de dizer que um ramo foi incorporada, ou devo excluir meus galhos quando eu terminar, então eu não se esqueça que tem e não tem sido fundida?

Foi útil?

Solução

A página man git-svn recomenda que você não usar mala. Este é um efeito colateral. Desde que você está rebasing o ramo (git svn rebase é um pouco como "git pull --rebase") de forma eficaz reescreve a história. Pode jogar fora nenhum commit locais que já estão a montante na subversão, como a fusão, e manter apenas os commits que realmente existem no repositório SVN. Desde uma mesclagem trivial confirmação de uma filial local não tem equivalente no SVN, você só confirmar as alterações "reais", assim que estas são as únicas mudanças visto em seu novo branch master rebased.

O ideal é a sua filial local deve se fundir fast-forward única, ou seja, sem merge commit é gerado. Se este não é o caso, então você deve considerar rebasing sua filial local para mestre em vez de juntar-lo. Isso evita a criação de uma mesclagem comprometer completamente.

Outras dicas

Porque você está passando SVN. Você vai perder uma grande quantidade de informações quando você faz isso (você também perde o autor, por exemplo).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top