Eu fiz check-out de um repositório svn usando git svn. Agora preciso fazer check-out de um dos ramos e rastreá-lo. Qual é a melhor maneira de fazer isso?
Crie um clone git que inclua seu tronco, tags e ramificações no Subversion com
git svn clone http://svn.example.com/project -T tronco -b ramos -t tags
A --stdlayout
opção é um bom atalho se o seu repositório Subversion usar a estrutura típica:
git svn clone http://svn.example.com/project --stdlayout
Faça seu repositório git ignorar tudo o que o repositório do subversion faz:
git svn show-ignore >> .git / info / exclude
Agora você deve conseguir ver todos os ramos do Subversion no lado do git:
git branch -r
Diga o nome da ramificação no Subversion é waldo
. No lado git, você correria
git checkout -b controles remotos waldo-svn / waldo
O sufixo -svn é para evitar avisos do formulário
aviso: refname 'waldo' é ambíguo.
Para atualizar o ramo git waldo-svn
, execute
git checkout waldo-svn git svn rebase
Para adicionar uma ramificação do Subversion a um clone somente de tronco, modifique o repositório git .git/config
para conter
[svn-remote "svn-mybranch"] url = http://svn.example.com/project/branches/mybranch buscar =: refs / remotes / mybranch
Você precisará desenvolver o hábito de correr
git svn fetch --fetch-all
para atualizar tudo o que git svn
pensa serem controles remotos separados. Neste ponto, você pode criar e rastrear ramificações como acima. Por exemplo, para criar um ramo git que corresponda a mybranch, execute
controles remotos git -b mybranch-svn remotes / mybranch
Para os ramos a partir do qual você pretende git svn dcommit
, mantenha suas histórias linear!
Você também pode estar interessado em ler uma resposta para uma pergunta relacionada .
--prefix=svn/
ao fazergit-svn init
ougit-svn clone
) Isso eliminará a necessidade de adicionar um sufixo em suas filiais locais.show-ignore
erros fora, tentegit svn show-ignore -i trunk