Qual é a maneira menos dolorosa para transferir alterações locais do Subversion para outra máquina?

StackOverflow https://stackoverflow.com/questions/573849

  •  05-09-2019
  •  | 
  •  

Pergunta

Eu estou trabalhando em uma mudança no meu laptop. Ele não está pronto para ser submetido ao repositório ainda, mas eu gostaria de continuar trabalhando no meu desktop também. Minha mudança conjunto é muito grande e não só ele contém modificações, ele também contém novos arquivos e arquivos apagados também.

eu poderia copiar a cópia de trabalho local completa para outra máquina e obter as mudanças no lugar. No entanto, soa como uma solução suja (porque eu estou poluindo metadados em outra máquina), e eu estou transferindo artefatos de construção desnecessariamente também.

Eu tentei transferir arquivos .patch usando TortoiseSVN mas mantém reclamando "remendo pertence a uma revisão mais antiga" (não é verdade e por que você se importa?) Ou "linhas não coincidem" (sim eles não fazem, porque eu mudei eles). Eu não fiz como experiência "popups de erro contínuas" em tudo.

Eu não quero instalar o Cygwin, então correção de linha de comando está fora de questão.

Eu acho que a última opção seria bifurcação um novo ramo para esse recurso e ir em um loop de "check-in / update". No entanto, estes são mostrados na história trac poluição criando lá.

idéias melhor? Ou qualquer coisa que eu estou ausente?

Foi útil?

Solução

Ramificação é a solução limpa. E tem a vantagem adicional de dar-lhe uma cópia de segurança enquanto você está trabalhando neste grande mudança. Para não mencionar, fácil sincronização de futuras mudanças entre máquinas.

Mas, você pode provavelmente começar afastado com apenas fechando todo o diretório de trabalho e despejá-la em algum lugar na outra máquina.

Outras dicas

Você tentou criar um novo ramo e usando svn switch . Ele vai transferi-lo para uma parte diferente do repositório e manter as alterações se ramificam a partir de sua revisão inicial de trabalho.

Como para abordagens alternativas, você pode adicionar GIT à mistura. modelo de controle de código-fonte distribuído do GIT lhe permitiria empurrar changesets e para trás entre seu desktop e laptop. E desde GIT gere a sua informação de alterações no sistema de arquivos local, os commits que você está fazendo em ambos os lados não iria aparecer na corrente que seu sistema TRAC está monitorando.

Então, basicamente você ir 'off-line com a subversão' e completar o seu trabalho usando commits GIT. Assim que estiver pronto, verifique em todo o kit e kaboodle ao seu tronco subversão.

Ramos especiais são leves no Subversion e são perfeitos para o isolamento de trabalho característica específica como esta. Se você estiver usando o Subversion 1.5 ou superior, em seguida, toda a sincronização e processo de fusão é muito mais fácil do que era com 1.4.

Gostaria de criar uma filial temporária para esta finalidade. Desta forma, só estão usando ferramentas SVN à sua disposição e você não está poluindo o meta-meta ou para copiar os artefatos.

Além disso, parece que você está verificando em seu código em intervalos espaçados e ter uma filial também vai evitar a perda de dados em caso seu disco rígido falhar.

Nem a última opção, o primeiro:. Você deveria ter criado um recurso de ramo há já muito tempo, se realmente existem tantas mudanças

Você pode fazer isso ainda, fazendo uma cópia svn de-cópia de trabalho para branch-diretório no servidor, para que você não precisa de um "ciclo de check-in / update", apenas um check-in, apenas um atualização / switch, realmente.

Como copiar svn MyWorkingCopy svn: // theserver / projeto / ramos / recursos / my-longa-ramo

Se você só precisa de uma réplica em seu desktop, acho que Live Sync funciona perfeitamente para que cenário. Eu tê-lo configurado para replicar minha pasta de checkout no meu laptop e dois desktops, o que me dá exatamente no mesmo estado nos três máquinas. E tudo acontece de forma contínua no fundo.

Ou você poderia ir para um ramo e certifique-se que você não se esqueça de cometer quaisquer alterações no laptop antes de se mudar para o desktop. : -)

EDIT: Em reponse ao comentário - sim, é possível ficar em apuros se você começar a editar arquivos enquanto as duas máquinas estão em processo de sincronização. O pior que pode acontecer é perder algumas edições em uma das máquinas. Na prática, as chances para que isso aconteça são muito pequenas.

Bem, a maioria das pessoas diria que se o seu "conjunto de mudanças é muito grande", você deve definitivamente verificar as mudanças na (em uma filial no necessário)!

Você pode tentar SVK . A partir do post e local SVK, cenário de uso SVK típica é

  • espelho repositórios remotos existente,
  • , em seguida, criar ramificações em sua máquina,
  • localmente trabalhos sobre estes ramos, e
  • quando tiver terminado, fundi-los de volta em seu tronco espelhado,
  • o último passo será transparente atualiza o repositório remoto.

Eu não tenho nenhum hands-on experiência de usar SVK. Mas eu acho que corresponde ao seu cenário. Este post descreve em mais detalhes http: //www.bieberlabs .com / arquivos / 2004/11/30 / utilizando-SVK /

Eu acho que uma versão Windows do SVK está disponível ( SVKWin32 ) e TortoiseSVN pode usar o espelho local do repositório para atualizar / commits.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top