Pergunta

No meu local de trabalho, usamos SVN e TortoisesVN (Windows XP) como cliente. Eu tenho um trajeto longo e trabalho offline durante isso.
Agora, eu gostaria de ter algum tipo de "desfazer estendido" localmente; ou seja, eu gostaria de ter controle de versão local da minha cópia de trabalho do SVN, a fim de ousar refatorar, por exemplo.
Mudar completamente para o GIT, Mercurial etc. não é uma opção, pois a empresa usa o SVN.

O que eu gostaria de saber é se alguém tiver alguma experiência na versão da cópia de trabalho local da SVN, talvez executando um Git local ou similar?
Existem desvantagens em potencial? (talvez mexendo com pastas .svn ou similares)

Foi útil?

Solução

Eu costumo fazer assim:

  1. Obtenha o repositório SVN como cópia de trabalho.
  2. Inicialize o repositório Git nesta cópia de trabalho.
  3. Hack Hack Hack;
  4. Comprometa -se com o meu repo Git.
  5. Atualização da empresa SVN.
  6. Resolver conflitos.
  7. Comprometa -se com a empresa SVN repo um recurso completo.

Outras dicas

Eu uso o Git como um cliente de subversão local para o trabalho e funciona muito bem. Quando você faz um git svn clone de um repositório de subversão, o checkout que você recebe não tem o oculto .svn diretórios, mas, em vez disso, é um repositório completo do Git por si só. A capacidade de usar galhos locais e leves para organizar meu próprio desenvolvimento é um recurso assassino para mim.

Outros recursos que eu uso o tempo todo são git stash, encenados com compromissos, e git add -p.

Você pode criar um instantâneo do trabalho usando a exportação SVN e, em seguida, criando seu próprio repositório de subversão e usar o instantâneo do repositório de trabalho como o check -in inicial.

Em seguida, você pode fazer suas alterações e usar a subversão (sua cópia do repositório local) até que você esteja pronto. É claro que você pode fazer alguma fusão regular do repositório principal de trabalho para garantir que seu conteúdo esteja atualizado. Por fim, quando o seu refsetor é feito, basta fazer um instantâneo de exportação do SVN do repositório local e mesclá -lo de volta ao seu principal repositório de trabalho.

Isso é um pouco grosseiro, mas essa é a única maneira de gerenciar esse tipo de fluxo de trabalho.

Se você tem acesso regular o suficiente para trabalhar. Você pode criar uma ramificação do conteúdo e trabalhar na filial a partir do repositório de trabalho exclusivamente e usar o método do repositório local quando precisar da sua funcionalidade de desfazer estendida. Nesse ponto, é claro que o uso de um sistema de controle de versão local não o limitará à subversão, então faça sua escolha.

Você pode querer tentar Svk que um VCS descentralizado com base na subversão. Ele pode ser usado para refletir o repositório oficial no seu laptop e sincronizar seus compromissos com o tronco oficial.

Na última vez em que verifiquei o status do SVN, o suporte local ao check-in ainda era um plano de recursos de longo prazo. O Git, por outro lado, é definitivamente uma opção, com Git-SVN. Ou seja, se sua arquitetura for Unix, AFAIK, GIT-SVN ainda não é suportada na plataforma Windows.

Nada impede a execução do servidor SVN local. Estou usando dessa maneira.

O Git seria uma boa solução (porque você pode fazer e mesclar muitos ramos com muita facilidade), mas:

  • Ao reimportar sua modificação para o SVN, você deve limpar primeiro os muitos ramos intermediários criados no Git;
  • O Git-SVN não funciona com a distribuição do Windows do Git, então você pode usar uma imagem virtual Linux se estiver trabalhando no Windows
  • Se você pode fazer o Git-SVN em execução, use scripts rubi git2svn et svn2git, conforme descrito em essa questão
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top