svn: come creare un ramo da una certa revisione di trunk


116

La seguente azione creerà solo un ramo dalla revisione della testa del tronco. Come si crea un ramo da una revisione specifica? Grazie.

$ 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."

2
Solo per notare che le due barre rovesciate () sono lì per ignorare i caratteri di nuova riga ... e non fa parte del comando svn
Harry Lime

Risposte:


163

Controlla il comando di aiuto:

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

Per specificarlo effettivamente sulla riga di comando usando il tuo esempio:

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

Dove 123sarebbe il numero di revisione nel trunk che si desidera copiare. Come altri hanno notato, puoi anche usare la sintassi @. Personalmente preferisco la separazione più netta della revisione # dall'URL.

Come indicato nella guida, puoi anche sostituire una revisione # con alcune parole:

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

Copierà la "revisione appena prima di COMMITTED".


Inoltre, nell'esempio sopra, se la revisione 123non si è verificata sotto trunk, la copy ...trunk@123 ...sintassi potrebbe fallire con Path ...trunk@123 does not exist in revision 768(dove 768è l'ultimo repo), mentre -r 123farà la cosa giusta. Osservato con i client SVN meno recenti, può o non può essere ancora il caso con 1.6.
vladr

3
L'argomento -rREV non funziona sempre. A volte hai bisogno di @REV. Vedi stackoverflow.com/questions/6591938/…
Mojca

1
-r funziona con svn, versione 1.7.13 (r1516569) su Mac OS X tramite 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."

Dove 192 è la revisione specificata

Puoi trovare queste informazioni dal libro SVN , in particolare qui nella pagina sulla copia svn


19

aggiungi la revisione utilizzando un carattere "@":

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

Oppure usa l'argomento della riga di comando -r [--revision].


Grazie per questo. Impossibile dire se le parentesi quadre dalla pagina man fossero necessarie. Avrebbero dovuto capire che stavano usando EBNF.
rstackhouse

0

Prova sotto 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

Nessuna barra "\" tra gli URL svn.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.