Pergunta

Estou curioso para saber se ele está OK para copiar um diretório sob controle de versão e começar a trabalhar em ambas as cópias.

Eu sei que pode ser diferente de VCS para outro, mas eu intencionalmente não especificar qualquer uma de VCS, pois eu sou curioso sobre diferentes casos.

Eu estava conversando com um colega de trabalho, recentemente sobre a fazê-lo no SVN.Eu acho que deveria ser OK, mas ainda não estou 100% certo, pois eu não sei o que exatamente o SVN é armazenar a cópia de trabalho.

No entanto, se falamos sobre o DVCS mundo, que as coisas podem ser ainda mais claro, uma vez que cada cópia de trabalho é um repositório por si só.Sendo enfrentados com isso em bzr agora, eu decidi fazer a pergunta.

Editar mais tarde:

Algumas pessoas perguntaram por que eu iria querer fazer isso.Aqui está toda a história:

No caso do SVN foi porque estar fora do escritório, a conexão para o servidor SVN foi realmente lento, para mim e meu colega de trabalho decidiu-se verificar as fontes apenas uma vez e fazer uma cópia local.Foi isso que fizemos e funcionou OK, mas eu ainda estou querendo saber se é garantido para trabalhar, ou simplesmente aconteceu.

No bzr caso, estou planejando para mover o "principal" repo para outro servidor.Então, eu estava pensando em simplesmente copiar e começar a considerar que o principal acordo de recompra.Eu acho que o mais seguro é fazer um clone embora.

Foi útil?

Solução

No Subversion, cada .svn pasta tem o que é necessário, para a pasta que os contém.E como todos os caminhos locais são armazenados como relativo, você está seguro durante a cópia total ou parcial de árvores fora o original checkout árvore.Eles continuam a funcionar em suas novas casas.

Eu freqüentemente cópia de subárvores de meu tronco fora, mude o novo cópias para outros branches/tags e fazer o que for necessário sobre o "clonado" cópias locais.Desta forma, se, por qualquer razão, eu preciso voltar e fazer algo no porta-malas, eu tenho tranquila de um tronco cópia no local original.

Copiar origem controlada diretórios em outra fonte controlada de árvores, por outro lado, é inseguro.Se você irá sobrescrever qualquer .svn pastas, você vai, muito provavelmente, ser danificar o seu destino de cópias.

Outras dicas

Eu faço isso, ocasionalmente, no SVN e eu não executar quaisquer problemas.Eu acredito que no SVN tudo o que está armazenado é o estado original do diretório e um ponteiro para o repositório, ele veio.

Então, basicamente, ele funciona como você acha que deveria.

  • Se Arquivo1 em Copy1 alterações e Arquivo2 em Copy2 alterações tanto pode cometer
  • Se Arquivo1 em Copy1 alterações e Arquivo1 em Copy2 alterações quem comete o segundo terá um erro e vai ter para actualizar/série primeiro.

Para aqueles curiosa para saber por que eu tive que copiar, tive problemas com saídas através de nossa rede a ser muito lento quando o primeiro verificar um de nossos maiores projetos.Por outro lado, basta copiar a partir de outro computador parecia dar-me com os mesmos benefícios.

No svn, não há problema.Você pode apenas trabalhar com a cópia como se você tivesse feito um segundo check-out.

Eu recomendo apenas conferir uma segunda vez.Se você quiser uma cópia sem .svn arquivos, svn export irá criar um.

Para o bzr, se você acabou de copiar .bzr diretório para outro local, ele vai trabalhar.Ele não armazena qualquer informação sobre o caminho é in ou o host é, de modo que você pode copiá-lo onde quer e espera que ele funcione bem.

Gostaria de sugerir que não, como você está contornando a origem do mecanismo de controle.

Mas, talvez, você pode explicar porquê?

Você também pode, basta verificar duas cópias de trabalho (pelo menos com o SVN) para dizer de trabalho/copy1 e do trabalho/copy2 e o trabalho nas duas versões em paralelo.

Eu me pergunto se o que você está tentando alcançar, uma vez que a cópia pode não ser a melhor solução para o seu problema.

Vai depender de VCS.Eu sei que no CVS que armazena (oculto) em diretórios dentro de cada versão controlada directory.Esses arquivos são, é claro, em seguida, copiados com qualquer cópia do directório.

É frequentemente o caso que você NÃO deseja copiar os arquivos escondidos que o rsync ferramenta vem com uma opção (C) ignorar esses arquivos da mesma forma como o CVS não.

Já tive algumas dores de cabeça com o SVN quando eu reorganizamos a pasta layout a partir de dentro do Visual Studio.Uma pasta movido dentro de uma solução de literalmente mover a pasta no sistema de arquivos, incluindo ocultos .svn a pasta.Isso faz com que cometer problemas porque o .svn de dados é associado ao caminho velho e ainda não encontrei uma forma para reassociar para o seu novo caminho.SVN clean up corre OK, mas corrige nada.SVN switch não permite que você alterá-lo depois que a pasta foi movida.Eu só tenho sido capaz de corrigir este problema eliminando todos os .svn pastas dentro da pasta movida e suas subpastas e, em seguida, voltar a adicionar a pasta.

O problema que eu tenho com essa correção é que você perde a sua versão trail esses arquivos porque SVN vê-lo como novo.Além disso, ele não armazena o conteúdo do arquivo como forma eficiente de armazenar a diferença da versão anterior.

Por SVN documentação, é recomendável permitir que o svn cliente para fazer todos os seus mover a pasta/create/delete para manter tudo em sincronia para o próximo commit.Isto nem sempre é aceitável a partir do Visual Studio.Felizmente, a maioria dos casos de problema são capturados durante a consolidação de tempo, especialmente se você usar o TortoiseSVN.

Para SVN, isso geralmente funciona como outros já disseram.

Se estiver a copiar entre máquinas, você provavelmente irá se deparar com problemas embora.Por exemplo, se você estiver acessando o repositório SVN usando file:// URL do repositório, as coisas provavelmente irá quebrar.O mesmo aplica-se a: http:// ou svn:// url onde o servidor de acesso podem ser diferentes.

Para ficar seguro, eu tinha acabado para um check-out no novo local.Se você tem um monte de uncomitted alterações que você deseja ter no novo diretório de trabalho (geralmente uma má idéia), então, você poderia usar o rsync a cópia de sua fonte de toda sem trazendo .svn diretórios.

Parece-me que o GIT pode também servir as suas necessidades, como você menciona que está sendo desconectado ou mais de uma porcaria de conexão.O GIT também tem muito bom SVN suporte para que os dois são complementares, e você vai acabar com uma bela versão de sistema de arquivo.

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