svn: como criar um ramo a partir de certa revisão do tronco

116

A ação a seguir criará apenas um ramo da revisão da cabeça do tronco. Como faço para criar um branch de uma revisão específica? Obrigado.

$ svn copy http://svn.example.com/repos/calc/trunk \
       http://svn.example.com/repos/calc/branches/my-calc-branch \
  -m "Creating a private branch of /calc/trunk."
Pierrotlefou
fonte
2
Apenas para notar que as duas barras invertidas () existem para ignorar os caracteres de nova linha ... e não faz parte do comando svn
Harry Lime

Respostas:

163

Confira o comando de ajuda:

svn help copy

  -r [--revision] arg      : ARG (some commands also take ARG1:ARG2 range)
                             A revision argument can be one of:
                                NUMBER       revision number
                                '{' DATE '}' revision at start of the date
                                'HEAD'       latest in repository
                                'BASE'       base rev of item's working copy
                                'COMMITTED'  last commit at or before BASE
                                'PREV'       revision just before COMMITTED

Para realmente especificar isso na linha de comando usando seu exemplo:

svn copy -r123 http://svn.example.com/repos/calc/trunk \
    http://svn.example.com/repos/calc/branches/my-calc-branch

Onde 123estaria o número de revisão no tronco que você deseja copiar. Como outros notaram, você também pode usar a sintaxe @. Eu prefiro a separação mais clara da revisão # da URL, pessoalmente.

Conforme observado na ajuda, você também pode substituir uma revisão # por certas palavras:

svn copy -rPREV http://svn.example.com/repos/calc/trunk \
    http://svn.example.com/repos/calc/branches/my-calc-branch

Copiaria a "revisão pouco antes de COMMITTED".

typeoneerror
fonte
Além disso, no exemplo acima, se a revisão 123não ocorreu por baixo trunk, então a copy ...trunk@123 ...sintaxe pode falhar com Path ...trunk@123 does not exist in revision 768(onde 768está o repositório mais recente), -r 123mas fará a coisa certa. Observado com clientes SVN mais antigos, pode ou não ainda ser o caso com 1.6.
vladr
3
O argumento -rREV nem sempre funciona. Às vezes você precisa de @REV. Consulte stackoverflow.com/questions/6591938/…
Mojca
1
-r funciona com svn, versão 1.7.13 (r1516569) no Mac OS X via Homebrew.
kakyo
35
$ svn copy http://svn.example.com/repos/calc/trunk@192 \
   http://svn.example.com/repos/calc/branches/my-calc-branch \
   -m "Creating a private branch of /calc/trunk."

Onde 192 é a revisão que você especifica

Você pode encontrar essas informações no livro SVN , especificamente aqui na página sobre svn copy

Dan McGrath
fonte
19

acrescente a revisão usando um caractere "@":

svn copy http://src@REV http://dev

Ou use o argumento da linha de comando -r [--revision].

Edward Q. Bridges
fonte
Obrigado por isso. Não foi possível dizer se os colchetes da página do manual eram necessários. Devia ter percebido que eles estavam usando EBNF.
rstackhouse
0

Experimente abaixo de um:

svn copy http://svn.example.com/repos/calc/trunk@rev-no 
       http://svn.example.com/repos/calc/branches/my-calc-branch 
  -m "Creating a private branch of /calc/trunk."  --parents

Sem barra "\" entre os URLs svn.

ShivaKumar
fonte