svn: Wie erstelle ich einen Zweig aus einer bestimmten Revision des Trunks?

116

Die folgende Aktion erstellt nur einen Zweig aus der Kopfrevision des Rumpfes. Wie erstelle ich einen Zweig aus einer bestimmten Revision? Vielen Dank.

$ 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
quelle
2
Nur um zu beachten, dass die beiden Backslashes () dazu dienen, Zeilenumbrüche zu ignorieren ... und es ist nicht Teil des Befehls svn
Harry Lime

Antworten:

163

Überprüfen Sie den Hilfebefehl:

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

So geben Sie dies anhand Ihres Beispiels in der Befehlszeile an:

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

Wo 123wäre die Revisionsnummer im Trunk, die Sie kopieren möchten? Wie andere angemerkt haben, können Sie auch die @ -Syntax verwenden. Ich persönlich bevorzuge die klarere Trennung der Revisionsnummer von der URL.

Wie in der Hilfe angegeben, können Sie eine Revisionsnummer auch durch bestimmte Wörter ersetzen:

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

Würde die "Revision kurz vor COMMITTED" kopieren.

typoneerror
quelle
Wenn im obigen Beispiel 123keine Überarbeitung darunter erfolgt ist trunk, schlägt die copy ...trunk@123 ...Syntax möglicherweise mit Path ...trunk@123 does not exist in revision 768(wo 768ist das neueste Repo) fehl , wohingegen -r 123das Richtige getan wird. Bei älteren SVN-Clients beobachtet, kann dies bei 1.6 immer noch der Fall sein oder auch nicht.
Vladr
3
Das Argument -rREV funktioniert nicht immer. Manchmal brauchst du @REV. Siehe stackoverflow.com/questions/6591938/…
Mojca
1
-r funktioniert mit svn, Version 1.7.13 (r1516569) unter Mac OS X über 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."

Wobei 192 die von Ihnen angegebene Revision ist

Sie finden diese Informationen aus dem SVN-Buch , speziell hier auf der Seite über SVN-Kopien

Dan McGrath
quelle
19

Fügen Sie die Revision mit einem "@" hinzu.

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

Oder verwenden Sie das Befehlszeilenargument -r [--revision].

Edward Q. Bridges
quelle
Danke dafür. Es konnte nicht festgestellt werden, ob die eckigen Klammern auf der Manpage erforderlich waren. Hätte denken sollen, dass sie EBNF verwenden.
Stapelhaus
0

Versuchen Sie es unter einem:

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

Kein Schrägstrich "\" zwischen den SVN-URLs.

ShivaKumar
quelle