como usar o Git para acessar um repositório SVN – caso específico

Acho que é um caso realmente específico em que as pessoas não precisam ter acesso aos meus branches do Git apresentados.

Outros desenvolvedores são usados ​​para usar apenas o / trunk no SVN. Eles rastreiam apenas as alterações feitas em / trunk.

Principalmente porque o sistema de Integração Contínua (CI) irá procurar por alterações e compilar / tronco.

Portanto, enquanto eu enviar todas as minhas alterações para o tronco, o resto da equipe ficará feliz.

Decidi usar ‘git svn’ porque gosto do conceito Git de controle de versão e, além disso, acho que é a melhor prática separar qualquer novo recurso em seu próprio branch antes de enviar para master (/ trunk).

Assim, é garantido que meu código nunca quebrará / trunk porque sempre irei trabalhar em um branch separado para qualquer novo recurso.

Quando estou feliz e testei o novo recurso, coloco-o no svn / trunk, onde todos podem ver e, o mais importante, rastrear todas as mudanças que foram feitas.

Funciona para mim. Espero que possa ser útil para alguém por aí também.

Portanto, esse é meu fluxo de trabalho atual para fazer um repositório SVN falar com Git:

1. mkdir [your_repo_folder]

2. cd [your_repo_folder]

3. git svn init [svn_repo_url] + /trunk

Isto irá inicializar a pasta atual para o seu repositório local
Observe que estou apontando a pasta para / trunk

OBS: Estava recebendo o erro “svn: OPTIONS 200 OK” quando tentei usar o [svn repo url] sem as informações do nome de usuário. Depois de incluir meu nome de usuário no endereço, funcionou. Então, no final, o endereço parecia com este http: // [nome de usuário] @ [svn repo url]

4.git svn fetch

Ele puxará as informações de revisão do svn do repositório remoto. Você deve ver muitas linhas com informações sobre as revisões do svn na tela do seu terminal

5.git checkout -b [new-feature-branch-name]

Esse é o novo ramo onde você vai trabalhar. Será bifurcado do mestre

[loop]
– você faz todas as alterações necessárias
– adiciona-as
– confirma-as
[/ loop]

quando estiver satisfeito com suas alterações e estiver pronto para enviar para o svn, faça o seguinte:

6.git checkout master

Voltar para o ramo mestre

7.git merge [new-feature-branch-name]   or git merge [new-feature-branch-name] -Xtheirs

Mesclar suas alterações do branch de recurso no master

if error Erro: update-index –refresh: o comando retornou o erro: 1
para corrigi-lo:
git ls-files | tr ‘ n’ ‘ 0’ | xargs -0 git update-index –assume-unchanged

8.git svn rebase

Certifique-se de obter a maioria das alterações de atualização do mestre. Ele rebase os commits do servidor SVN upstream com seu mestre Git local

Obs: Você só deve fazer git svn rebase de seu mestre Git e sempre deve fazer isso antes de qualquer git svn dcommit.

9.git svn dcommit

Envie todas as suas alterações para o svn repo remoto