svn: jak utworzyć gałąź z określonej wersji pnia

116

Następująca czynność utworzy tylko gałąź z wersji głównej pnia. Jak utworzyć gałąź z określonej wersji? Dzięki.

$ 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
źródło
2
Wystarczy zauważyć, że dwa odwrócone ukośniki () mają zignorować znaki nowej linii ... i nie jest to część polecenia svn
Harry Lime

Odpowiedzi:

163

Sprawdź polecenie pomocy:

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

Aby faktycznie określić to w wierszu poleceń na przykładzie:

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

Gdzie 123byłby numer wersji w bagażniku, który chcesz skopiować. Jak zauważyli inni, możesz również użyć składni @. Osobiście wolę wyraźniejsze oddzielenie numeru wersji od adresu URL.

Jak wspomniano w pomocy, możesz zastąpić numer wersji również określonymi słowami:

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

Skopiowałby „wersję tuż przed zatwierdzeniem”.

typoneerror
źródło
Ponadto w powyższym przykładzie, jeśli wersja 123nie wystąpiła poniżej trunk, copy ...trunk@123 ...składnia może się nie powieść Path ...trunk@123 does not exist in revision 768(gdzie 768jest najnowsze repozytorium), podczas gdy -r 123zrobi to dobrze. Obserwowane w przypadku starszych klientów SVN, może, ale nie musi, mieć miejsce w przypadku wersji 1.6.
vladr
3
Argument -rREV nie zawsze działa. Czasami potrzebujesz @REV. Zobacz stackoverflow.com/questions/6591938/…
Mojca
1
-r działa z svn w wersji 1.7.13 (r1516569) na Mac OS X przez 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."

Gdzie 192 to określona przez Ciebie wersja

Możesz znaleźć te informacje w książce SVN , w szczególności tutaj, na stronie o kopii svn

Dan McGrath
źródło
19

dołącz wersję za pomocą znaku „@”:

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

Lub użyj argumentu wiersza poleceń -r [--revision].

Edward Q. Bridges
źródło
Dzięki za to. Nie udało się stwierdzić, czy nawiasy kwadratowe ze strony podręcznika są wymagane. Powinienem się domyślić, że używają EBNF.
rstackhouse
0

Wypróbuj poniżej jeden:

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

Brak ukośnika „\” między adresami URL svn.

ShivaKumar
źródło