2010-02-25 11 views
109

L'azione seguente creerà solo un ramo dalla revisione della testa del tronco. Come posso creare un ramo da una revisione specifica? Grazie.svn: come creare un ramo da una certa revisione del tronco

$ 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 i due backslash (\) sono lì per ignorare i caratteri di nuova riga ... e non fa parte del comando svn –

risposta

153

Partenza il comando help:

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 specificare in realtà questo sulla riga di comando con il tuo esempio:

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

Dove 123 sarebbe il numero di revisione in linea che si desidera copiare. Come altri hanno notato, puoi anche usare la sintassi @. Preferisco la separazione più chiara del numero di revisione dall'URL, personalmente.

Come osservato nella guida, è possibile sostituire una revisione # con certe parole così:

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

dovrà copiare il "revisione appena prima impegnato".

+0

Inoltre, nell'esempio precedente, se la revisione '123' non si è verificata sotto' trunk', la sintassi 'copia ... trunk @ 123 ...' potrebbe fallire con 'Path ... trunk @ 123 non esiste nella revisione 768' (dove '768' è il repository più recente), mentre' -r 123' farà la cosa giusta. Osservato con i vecchi client SVN, potrebbe essere o non essere ancora il caso di 1.6. – vladr

+3

L'argomento -rREV non funziona sempre. A volte hai bisogno di @REV. Vedi http://stackoverflow.com/questions/6591938/svn-copy-r-revision-number-url-path – Mojca

+1

-r funziona con svn, versione 1.7.13 (r1516569) su Mac OS X tramite Homebrew. – kakyo

31
$ svn copy http://svn.example.com/repos/calc/[email protected] \ 
    http://svn.example.com/repos/calc/branches/my-calc-branch \ 
    -m "Creating a private branch of /calc/trunk." 

dove 192 è la revisione si specifica

È possibile trovare queste informazioni dal SVN Book, specificamente here on the page about svn copy

17

accoda la revisione utilizzando un carattere "@":

svn copy http://[email protected] http://dev 

Oppure utilizzare la riga di comando -r [--revision] argume nt.

+0

Grazie per questo. Non è stato possibile stabilire se sono state richieste le parentesi quadre dalla pagina man. Avrebbe dovuto capire che stavano usando EBNF. – rstackhouse

Problemi correlati