Pergunta

Usando a subversão, na minha cópia de trabalho, faço uma modificação menor (atualize um número de versão). Eu gostaria de marcar minha cópia de trabalho. Essa tag ainda seria uma cópia barata com a modificação ou o SVN duplicaria os arquivos? Eu odiaria ver meu repositório crescer enormemente em tamanho, porque estou tentando salvar uma mudança de número de versão.

A razão pela qual pergunto sobre a criação de uma tag que contém uma modificação em vez de cometer, então a marcação envolve meu servidor de construção. O servidor Build cria um CCNetLabel que eu uso para atualizar os números de versão dos meus projetos (AssemblyInfo.cs). Quando a construção é bem -sucedida, cria uma tag. Quando uso o ForceBuild, a tag é baseada na cópia de trabalho que conteria o número da versão modificada. Eu quero que a tag contenha o número da versão apropriado.

Nota: É discutível se estou criando uma ramificação ou uma tag, no entanto, o SVN não faz uma distinção entre os dois.

Foi útil?

Solução

Depende. Se sua cópia de trabalho estiver atualizada (todos os nós têm a mesma revisão), é tão barato quanto a marcação do repositório.

Para cada arquivo/diretório (ou realmente subárvore) com uma revisão diferente da que seus dados adicionais dos pais serão adicionados. E se você tiver modificações locais, ainda mais dados serão adicionados.

Mas ainda é razoável barato: não duplica nenhum arquivo que já esteja no repositório.

Outras dicas

Da descrição da subversão

  • Ramificação e marcação são operações baratas (tempo constante). Não há razão para que essas operações sejam caras, então não são. Filas e tags são implementadas em termos de uma operação de "cópia" subjacente. Uma cópia ocupa uma pequena quantidade constante de espaço. Qualquer cópia é uma tag; E se você começar a se comprometer com uma cópia, também é uma filial. (Isso acaba com a "marcação de ponto de ramificação" do CVS, removendo a distinção que tornava as tags de ponto de ramificação necessárias em primeiro lugar.)

Observação! Acabei de notar isso Subversão foi transferido para a organização do projeto Apache

Criar uma etiqueta ou uma ramificação em subversão é muito barato. Os arquivos não serão copiados. Tudo o que acontece é que uma nova revisão será criada, cujo conteúdo basicamente contém um ponteiro para onde a tag foi copiada. Isso será do mesmo tamanho para uma etiqueta de um projeto com um arquivo pequeno ou para um com um milhão de grandes.

Quando você diz "Tag minha cópia de trabalho", você quer dizer "Tag My Working Branch"? Você só pode marcar dados que já foram comprometidos com o repositório em algum lugar, não suas alterações não comprometidas locais.

Um post bastante desatualizado, mas vale a pena mencionar para quem visita que a resposta afirmando que você só pode 'você só pode marcar dados que já foram comprometidos no repositório ...' O trabalho comprometido não é completamente preciso (pelo menos não agora).

Você pode marcar uma cópia de trabalho, que pode conter revisões mistas e até diretórios com troca de diretórios, bem como modificações locais.

Quanto ao baixo preço, sim, ainda deve ser barato, pois a subversão será ramificada para você e, em seguida, sobrepor sua cópia de trabalho muda no repos

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