svn: cómo crear una rama a partir de cierta revisión del tronco

116

La siguiente acción solo creará una rama a partir de la revisión principal del tronco. ¿Cómo creo una rama a partir de una revisión específica? Gracias.

$ 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
fuente
2
Solo para tener en cuenta que las dos barras invertidas () están ahí para ignorar los caracteres de nueva línea ... y no es parte del comando svn
Harry Lime

Respuestas:

163

Consulte el comando de ayuda:

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 especificar esto realmente en la línea de comando usando su ejemplo:

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

¿Dónde 123estaría el número de revisión en el tronco que desea copiar? Como han señalado otros, también puede utilizar la sintaxis @. Personalmente, prefiero la separación más clara entre el número de revisión y la URL.

Como se indica en la ayuda, también puede reemplazar un número de revisión con ciertas palabras:

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

Copiaría la "revisión justo antes de COMPROMETIDA".

typeoneerror
fuente
Además, en el ejemplo anterior, si la revisión 123no ocurrió debajo trunk, entonces la copy ...trunk@123 ...sintaxis puede fallar con Path ...trunk@123 does not exist in revision 768(donde 768está el repositorio más reciente), mientras que -r 123hará lo correcto. Observado con clientes SVN más antiguos, puede o no ser el caso con 1.6.
vladr
3
El argumento -rREV no siempre funciona. A veces necesitas @REV. Ver stackoverflow.com/questions/6591938/…
Mojca
1
-r funciona con svn, versión 1.7.13 (r1516569) en Mac OS X a través de 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."

Donde 192 es la revisión que especifica

Puede encontrar esta información en el Libro SVN , específicamente aquí en la página sobre copia svn

Dan McGrath
fuente
19

agregue la revisión usando un carácter "@":

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

O use el argumento de línea de comando -r [--revision].

Edward Q. Bridges
fuente
Gracias por esto. No se pudo decir si se requerían los corchetes de la página de manual. Debería haber imaginado que estaban usando EBNF.
rstackhouse
0

Prueba debajo de uno:

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

No hay barra "\" entre las URL de svn.

ShivaKumar
fuente