Respostas:
A ramificação no Subversion é facilitada por uma facilidade de cópia muito leve e eficiente.
Ramificação e marcação são efetivamente iguais. Apenas copie uma pasta inteira no repositório para outro lugar no repositório usando o svn copy
comando
Basicamente, isso significa que é por convenção o que copiar uma pasta significa - seja um backup, etiqueta, ramificação ou qualquer outra coisa. Dependendo de como você deseja pensar sobre as coisas (normalmente dependendo de qual ferramenta SCM você usou no passado), você precisa configurar uma estrutura de pastas no seu repositório para suportar seu estilo.
Estilos mais comuns são para ter um monte de pastas na parte superior do seu repositório chamado tags
, branches
, trunk
, etc. - que lhe permite copiar todo o seu trunk
(ou sub-conjuntos) para os tags
e / ou branches
pastas. Se você tiver mais de um projeto, poderá replicar esse tipo de estrutura em cada projeto:
Pode demorar um pouco para se acostumar com o conceito - mas funciona - apenas verifique se você (e sua equipe) são claros quanto às convenções que você usará. Também é uma boa idéia ter uma boa convenção de nomenclatura - algo que indique por que a ramificação / tag foi feita e se ainda é apropriada - considere maneiras de arquivar ramificações obsoletas.
svn cp
usa cópias baratas, não copia os arquivos reais durante a ramificação. Veja svnbook.red-bean.com/en/1.1/ch04s02.html
Crie uma nova ramificação usando o svn copy
comando da seguinte maneira:
$ svn copy svn+ssh://host.example.com/repos/project/trunk \
svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
-m "Creating a branch of project"
svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .
(se você deseja alternar a saída atual para uma nova ramificação) ou svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH
(se você deseja ter uma nova ramificação em um diretório separado) para começar a trabalhar na ramificação recém-criada.
--parents
opçãosvn copy
!
-m
opção, ele diz como svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not exist
. Com -m
isso diz svn: E205009: Local, non-commit operations do not take a log message or revision properties
. (Substituí os endereços, mas eles existem, exceto, ofc, o novo diretório da filial e todo o caminho + URL que o SVN, por algum motivo, fundiu no erro) .
svn cp /trunk/ /branch/NEW_Branch
Se você tiver algumas alterações locais no tronco, use Rsync
para sincronizar as alterações
rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
rsync
dessa maneira. svn cp
também copiará quaisquer alterações locais.
Suponha que você queira criar uma ramificação a partir de um nome de tronco (como "TEST") e use:
svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
Normalmente, você o copia para svn + ssh: //host.example.com/repos/project/branches/mybranch, para que você possa manter várias ramificações no repositório, mas sua sintaxe é válida.
Aqui estão alguns conselhos sobre como configurar o layout do seu repositório .
Dica para novos usuários de SVN; isso pode ajudar um pouco na obtenção rápida dos URLs corretos.
Execute svn info
para exibir informações úteis sobre a filial com saída atual.
A URL deve (se você executar o svn na pasta raiz) fornecer a URL da qual você precisa copiar.
Também para alternar para o ramo recém-criado, use o svn switch
comando:
svn switch http://my.repo.url/myrepo/branches/newBranchName
Se você planeja mesclar sua filial, sugiro que você analise isso:
Ouvi dizer que o Subversion 1.5 constrói mais o rastreamento de mesclagem, não tenho experiência com isso. Meu projeto está no 1.4.xe svnmerge.py salva a vida!
Abaixo estão as etapas para criar uma ramificação do tronco usando o TortoiseSVN na máquina Windows. Obviamente, isso precisa do cliente TortoiseSVN para ser instalado.