Synchronize Git repositories
É muito fácil sincronizar seu repositório do Git com novos commits no repositório SVN original. Isso contribui para um período de transição confortável no processo de migração, no qual você pode continuar a usar seu fluxo de trabalho do SVN existente e começar a experimentar o Git.
É possível sincronizar em ambas as direções. No entanto, a recomendação é fazer uma sincronização unidirecional do SVN para o Git. Durante o período de transição, commits só devem ser feitos no seu repositório SVN, e não no repositório do Git. Depois de ter certeza de que sua equipe está pronta para fazer a mudança, você pode concluir o processo de migração e começar fazer o commit das alterações com o Git em vez do SVN.
Enquanto isso, continue fazendo o commit no seu repositório SVN e sincronize seu repositório do Git sempre que necessário. Esse processo é semelhante à fase de Conversão, mas como você está lidando apenas com alterações incrementais, ele deve ser muito mais eficiente.
Atualizar o arquivo de autores
O arquivo authors.txt
usado para mapear os nomes de usuário do SVN para os nomes completos e endereços de e-mail é essencial para o processo de sincronização. Se ele foi movido do local ~/GitMigration/authors.txt
que foi usado até agora, é preciso atualizar seu local com:
git config svn.authorsfile
Se novos desenvolvedores realizaram commits no repositório SVN desde a última sincronização (ou o clone inicial), o arquivo de autores precisa ser atualizado de acordo. Isso pode ser feito ao anexar de forma manual os novos usuários ao arquivo authors.txt
ou com a opção --authors-prog
, conforme discutido na próxima seção.
Em geral, para sincronizações pontuais é mais fácil editar de modo direto o arquivo de autores; no entanto, a opção --authors-prog
é preferencial se você estiver realizando sincronizações não supervisionadas (ou seja, em uma tarefa agendada).
Material relacionado
Como mover um Repositório do Git completo
VER SOLUÇÃO
Aprenda a usar o Git com o Bitbucket Cloud
Como gerar autores do Git de forma automática
Se o arquivo de autores não precisar ser atualizado, você pode pular para a próxima seção.
O comando git svn
inclui uma opção chamada --authors-prog
, que aponta para um script que transforma os nomes de usuário do SVN em autores do Git de modo automático. Vai ser necessário configurar esse script para aceitar o nome de usuário do SVN como seu único argumento e retornar uma linha única no formato Name
(assim como o lado direito do arquivo de autores existente). Essa opção pode ser muito útil se você precisar adicionar novos desenvolvedores ao seu projeto com frequência.
Se você quiser usar a opção --authors-prog
, crie um arquivo chamado authors.sh
em ~/GitMigration
. Adicione a linha a seguir ao authors.sh
para retornar um nome e um e-mail fictícios do Git para qualquer autor que não seja encontrado em authors.txt
:
echo "$1 <$1@example.com>"
Novamente, isso vai gerar apenas um nome e um e-mail fictícios com base no nome de usuário do SVN, então fique à vontade para fazer alterações se puder fornecer um mapeamento mais significativo.
Buscar os novos commits do SVN
Ao contrário do SVN, o Git faz uma distinção entre o download de commits upstream e sua integração ao projeto. O primeiro é chamado de" busca", enquanto a última pode ser feita por meio do merge ou rebase. No diretório ~/GitMigration
, execute o comando a seguir para buscar novos commits no repositório SVN original.
git svn fetch
Ele é semelhante ao comando git svn clone
da fase anterior, pois atualiza apenas as ramificações remotas do repositório do Git – as ramificações locais ainda não vão exibir nenhuma das atualizações. As ramificações remotas, por outro lado, devem corresponder à risca ao histórico do seu repositório SVN.
Se você estiver usando a opção --authors-prog
, ela precisa ser incluída no comando acima, da seguinte forma:
git svn fetch --authors-prog=authors.sh
Sincronização com os commits buscados
Para aplicar os commits baixados no repositório, execute o comando a seguir:
java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar sync-rebase
Isso vai fazer o rebase dos commits buscados nas ramificações locais para que correspondam às suas equivalentes remotas. Agora você deve ver os novos commits na saída do git log
.
Limpar o repositório do Git (novamente)
Também é uma boa ideia executar o script git-clean
novamente para remover quaisquer marcações ou ramificações obsoletas que foram excluídas do repositório SVN original desde a última sincronização:
java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force
Seu repositório do Git local agora deve ser sincronizado com o repositório SVN.
Resumo
Durante esse período de transição, é muito importante que seus desenvolvedores realizem commits somente no repositório SVN original. O único momento em que o repositório do Git deve ser atualizado é por meio do processo de sincronização discutido acima. Isso é muito mais fácil do que gerenciar um fluxo de trabalho de sincronização bidirecional, mas ainda permite que você comece a integrar o Git em seu processo de build.
Compartilhar este artigo
Próximo tópico
Leitura recomendada
Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.