Close

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.

Migração do Git: a recomendação é fazer uma sincronização unidirecional do SVN para o Git.

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).

bancos de dados
Material relacionado

Como mover um Repositório do Git completo

Logotipo do Bitbucket
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.

Pessoas colaborando usando uma parede cheia de ferramentas

Blog do Bitbucket

Ilustração do DevOps

Caminho de aprendizagem de DevOps

Demonstrações de funções no Demo Den com parceiros da Atlassian

Como o Bitbucket Cloud funciona com o Atlassian Open DevOps

Inscreva-se para receber a newsletter de DevOps

Thank you for signing up