Estou criando meu primeiro projeto no Subversion . Até agora eu tenho
branches
tags
trunk
Acho que preciso imediatamente tornar os galhos singulares e começar de novo. Atualizar ramificações é a norma.
Venho trabalhando no porta-malas e movendo o conteúdo para as tags da seguinte maneira.
mkdir tags/1.0
cp -rf trunk/* tags/1.0
svn add tags/1.0
svn commit -m " create a first tagged version"
Meu intestino me diz que isso está totalmente errado, e eu devo manter algum relacionamento entre os arquivos usando svn copy
. Os arquivos que eu criar dessa maneira não terão relação um com o outro, e tenho certeza de que vou perder os recursos do Subversion. Estou correcto?
Devo usar svn copy para os arquivos individuais?
mkdir tags/1.0
svn add tags/1.0
svn copy trunk/file1 tags/1.0
svn copy trunk/file2 tags/1.0
svn copy trunk/file3 tags/1.0
svn commit -m " create a first tagged version"
Devo usar svn copy em todo o diretório?
svn copy cp -rf trunk tags/1.0
svn commit -m " create a first tagged version"
Respostas:
Você está certo, pois não é "correto" adicionar arquivos à pasta de tags.
Você adivinhou corretamente que
copy
é a operação a ser usada; Ele permite ao Subversion acompanhar o histórico desses arquivos e também (eu assumo) armazená-los com muito mais eficiência.Na minha experiência, é melhor fazer cópias ("snapshots") de projetos inteiros, ou seja, todos os arquivos do local de check-out raiz. Dessa forma, o instantâneo pode se sustentar por si só, como uma verdadeira representação do estado do projeto inteiro em um determinado momento.
Esta parte do "livro" mostra como o comando é normalmente usado.
fonte
Usar:
Forma abreviada:
fonte
Como observado por @victor hugo, a maneira "adequada" é usar o svn copy. Há uma ressalva. A "tag" criada dessa maneira não será uma tag verdadeira, será uma cópia exata da revisão especificada, mas será uma revisão diferente. Portanto, se o seu sistema de compilação usa a revisão svn de alguma forma (por exemplo, incorpora o número obtido com 'svn info' na versão do produto que você constrói), você não poderá criar exatamente o mesmo produto a partir de uma tag (a tag O resultado terá a revisão da tag em vez da do código original).
Parece que, por design, não há como o svn criar uma meta tag realmente adequada.
fonte
echo "{ 'svnRev': \"`svn info | awk '/Last Changed Rev:/{print $4}'`\" }" >svnver.txt
`awk
e obter essas informações diretamente do svn usando a--show-item
opção:svn info --show-item last-changed-revision
Apenas use isto:
(tudo em uma linha, é claro.) Você deve sempre criar uma ramificação de toda a pasta e conteúdo do tronco. É claro que é possível ramificar sub-partes do tronco, mas isso quase nunca será uma boa prática. Você quer que o ramo se comporte exatamente como o tronco agora e, para que isso aconteça, é necessário ramificar o tronco inteiro.
Veja um resumo melhor do uso do SVN no meu blog: SVN Essentials e SVN Essentials 2
fonte
Poderia usar o Tortoise:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-branchtag.html
fonte
@victor hugo e @unwind estão corretos, e a solução da victor é de longe a mais simples. No entanto, tenha cuidado com os fatores externos no seu projeto SVN. Se você referenciar bibliotecas externas, a referência de revisão externa (seja uma marca, HEAD ou número) permanecerá inalterada quando você marcar os diretórios que possuem referências externas.
É possível criar um script para lidar com esse aspecto da marcação, para uma discussão sobre esse tópico, consulte este artigo da SO: Marcando um check-out do SVN com externos
fonte
Outra opção para marcar um repositório do Subversion é adicionar a marca à propriedade svn: log da seguinte forma:
Recentemente, comecei a pensar que essa é a maneira mais "correta" de marcar. Dessa forma, você não cria revisões extras (como faz com "svn cp") e ainda pode extrair facilmente todas as tags usando grep na saída "svn log":
Além disso, dessa forma, você pode excluir tags de forma transparente, se necessário. Então, as tags se tornam uma meta-informação completa, e eu gosto.
fonte
Tudo o que você precisa fazer é alterar o caminho da URL. Este comando criará um novo diretório "tagDestination". A segunda linha informará todos os detalhes do erro, se houver algum. Crie uma variável svn env se não for criada. Pode verificar (Cmd: - set, Powershell: - Get-ChildItem Env :) O caminho padrão é "C: \ Arquivos de Programas \ TortoiseSVN \ bin \ TortoiseProc.exe"
fonte
Tente isso. Funciona para mim:
fonte