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

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”.


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


19

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

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

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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.