Wie erstelle ich einen Zweig?

Antworten:

349

Das Verzweigen in Subversion wird durch eine sehr sehr leichte und effiziente Kopierfunktion erleichtert.

Verzweigung und Markierung sind praktisch gleich. Kopieren Sie einfach mit dem svn copyBefehl einen ganzen Ordner im Repository an eine andere Stelle im Repository .

Grundsätzlich bedeutet dies, dass das Kopieren eines Ordners gemäß Konvention bedeutet - ob es sich um ein Backup, ein Tag, einen Zweig oder was auch immer handelt. Abhängig davon, wie Sie über Dinge nachdenken möchten (normalerweise abhängig davon, welches SCM-Tool Sie in der Vergangenheit verwendet haben), müssen Sie eine Ordnerstruktur in Ihrem Repository einrichten, um Ihren Stil zu unterstützen.

Häufige Arten sind eine Reihe von Ordnern an der Spitze Ihres Repository haben genannt tags, branches, trunkusw. - , dass Sie Ihre ganzen kopieren kann trunk(oder Untergruppen) in den tagsund / oder branchesOrdner. Wenn Sie mehr als ein Projekt haben, möchten Sie möglicherweise diese Art von Struktur unter jedem Projekt replizieren:

Es kann eine Weile dauern, bis Sie sich an das Konzept gewöhnt haben - aber es funktioniert - stellen Sie nur sicher, dass Sie (und Ihr Team) klar sind, welche Konventionen Sie verwenden werden. Es ist auch eine gute Idee, eine gute Namenskonvention zu haben - etwas, das Ihnen sagt, warum der Zweig / das Tag erstellt wurde und ob es noch angemessen ist -, über Möglichkeiten nachzudenken, veraltete Zweige zu archivieren.

Ronnie
quelle
211
"svn copy" hat den Vorteil, dass der Verlauf vor der Verzweigung beibehalten wird. Manuelles Kopieren in ein anderes Verzeichnis wird nicht.
WhyNotHugo
5
Beachten Sie auch, dass es normalerweise eine schlechte Idee ist, Unterverzeichnisse von "trunk" zu markieren oder zu verzweigen. Dies macht es schwierig zu verfolgen, welches Unterverzeichnis verzweigt wurde, und die meisten Tools werden durch diese Verzweigungen verwirrt (z. B. bedeutet das Wechseln von Zweigen die Verzeichnisstruktur der WC-Änderungen, was IDEs verwirrt und Tools erstellt). Nur immer "Stamm" verzweigen.
Sleske
1
@Will Verwendet tatsächlich svn cpbillige Kopien, kopiert es nicht die tatsächlichen Dateien während der Verzweigung. Siehe svnbook.red-bean.com/de/1.1/ch04s02.html
Walty Yeung
606

Erstellen Sie einen neuen Zweig mit dem folgenden svn copyBefehl:

$ svn copy svn+ssh://host.example.com/repos/project/trunk \
           svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
      -m "Creating a branch of project"
funkelt
quelle
24
Verwenden svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .Sie als Nächstes (wenn Sie die aktuelle Kasse auf einen neuen Zweig umstellen möchten) oder svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH(wenn Sie einen neuen Zweig in einem separaten Verzeichnis haben möchten), um mit der Arbeit an einem neu erstellten Zweig zu beginnen.
Jakub Narębski
3
Hinweis: In einigen Fällen müssten Sie die--parentsOption mit verwendensvn copy!
Jakub Narębski
1
Aus irgendeinem Grund habe ich dieses cmd verwendet und es hat nicht funktioniert, aber als ich svn + ssh in nur https geändert habe, hat es funktioniert. Habe ich etwas falsch gemacht? Was bedeutet svn + ssh? Vielen Dank!
Aviel Gross
Sie müssen zuerst ein neues Verzeichnis in Ihrer Filiale erstellen -> svn mkdir host.example.com/repos/project/branches/NAME_OF_BRANCH -m "Machen Sie das Filialverzeichnis so, dass es alle Filialen enthält"
Silvio Troia
Wenn ich die -mOption weglasse , heißt es wie svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not exist. Damit -mheißt es svn: E205009: Local, non-commit operations do not take a log message or revision properties. (Ich habe die Adressen ersetzt, aber sie existieren, außer ofc, dem neuen Zweigverzeichnis und dem gesamten Pfad + der URL, die SVN aus irgendeinem Grund im Fehler zusammengeführt hat) .
Hi-Angel
33

Wenn Ihr Repo über https verfügbar ist, können Sie diesen Befehl verwenden, um ...

svn copy https://host.example.com/repos/project/trunk \
       https://host.example.com/repos/project/branches/branch-name \
  -m "Creating a branch of project"
Dave
quelle
26
svn cp /trunk/ /branch/NEW_Branch

Wenn Sie einige lokale Änderungen in der Amtsleitung haben, verwenden Sie diese, Rsyncum Änderungen zu synchronisieren

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
Parag Bafna
quelle
2
Es ist nicht erforderlich, rsyncauf diese Weise zu verwenden. svn cpkopiert auch alle lokalen Änderungen.
Kevin Panko
@ KevinPanko Nicht festgeschriebene Änderungen werden nicht kopiert.
Parag Bafna
4
Es tut, bestätigt mit svn, Version 1.8.5
Kevin Panko
Ich wundere mich darüber. Dies scheint die einfachste Option zu sein, und AFAI erinnert sich, dass ich dies getan habe, als ich vor 3 Jahren mit SVN gearbeitet habe. Aber was ist der Unterschied zwischen diesen und denen, die direkt mit den Server-URLs arbeiten?
Oligofren
@ KevinPanko Weißt du, ob es auch neu erstellte Dateien kopiert?
John Hamilton
16

Angenommen, Sie möchten einen Zweig aus einem Trunk-Namen (als "TEST") erstellen und verwenden dann:

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
Chamly Idunil
quelle
14

Normalerweise kopieren Sie es nach svn + ssh: //host.example.com/repos/project/branches/mybranch, damit Sie mehrere Zweige im Repository behalten können, aber Ihre Syntax ist gültig.

Hier einige Ratschläge zum Einrichten Ihres Repository-Layouts .

pix0r
quelle
13

Top Tipp für neue SVN-Benutzer; Dies kann ein wenig helfen, um schnell die richtigen URLs zu erhalten.

Führen Sie svn infodiese Option aus , um nützliche Informationen zum aktuell ausgecheckten Zweig anzuzeigen.

Die URL sollte (wenn Sie svn im Stammordner ausführen) die URL enthalten, von der Sie kopieren müssen.

Verwenden Sie auch den svn switchBefehl , um zum neu erstellten Zweig zu wechseln :

svn switch http://my.repo.url/myrepo/branches/newBranchName
chim
quelle
3
Sie können auch ^ anstelle des Repository Root
chim
11

Wenn Sie sogar vorhaben, Ihre Niederlassung zusammenzuführen, sollten Sie sich Folgendes ansehen:

Svnmerge.py

Ich habe gehört, dass Subversion 1.5 mehr Merge-Tracking einbaut. Ich habe keine Erfahrung damit. Mein Projekt ist auf 1.4.x und svnmerge.py ist ein Lebensretter!

Basszero
quelle
6
  • Erstellen Sie einen neuen Ordner außerhalb Ihres aktuellen Projekts. Sie können ihm einen beliebigen Namen geben. (Beispiel: Sie haben eine Kasse für ein Projekt mit dem Namen "Anpassung". Und es hat viele Projekte, wie "Projekt1", "Projekt2" .... Und Sie möchten einen Zweig von "Projekt1" erstellen. Öffnen Sie also zuerst das " Anpassung ", klicken Sie mit der rechten Maustaste, erstellen Sie einen neuen Ordner und geben Sie ihm den Namen" Project1Branch ").
  • Klicken Sie mit der rechten Maustaste auf "Myproject1" .... TortoiseSVN -> Branch / Tag.
  • Arbeitskopie auswählen.
  • Browser öffnen .... Genau rechts parallel auf "An URL".
  • Wählen Sie Anpassung ..... Rechtsklick und dann Ordner hinzufügen. und gehen Sie den Ordner durch, den Sie erstellt haben. Hier ist es "Project1Branch". Klicken Sie nun auf die Schaltfläche OK, um sie hinzuzufügen.
  • Kasse dieser neuen Banch.
  • Gehen Sie erneut zu Ihrem Projekt, welchen Zweig Sie erstellen möchten. Klicken Sie mit der rechten Maustaste auf TorotoiseSVN -> Zweig / Tag. Wählen Sie dann Arbeitskopie. Und Sie können die URL als Ihren Filialnamen angeben. wie {Ihre IP-Adresse / svn / AAAA / Anpassung / Project1Branch}. Sie können den Namen auch in der URL festlegen, damit der Ordner nur mit diesem Namen erstellt wird. Wie {Ihre IP-Adresse / svn / AAAA / Anpassung / Project1Branch / MyProject1Branch}.
  • Drücken Sie die OK-Taste. Jetzt können Sie die Anmeldungen sehen ... Ihre Arbeitskopie wird in Ihrer Filiale gespeichert.
  • Jetzt können Sie einen Check-out machen ... und Ihre Arbeit genießen. :) :)
Sonu Gupta
quelle
-1

Im Folgenden finden Sie die Schritte zum Erstellen eines Zweigs aus dem Trunk mithilfe von TortoiseSVN in einem Windows-Computer. Dazu muss natürlich der TortoiseSVN-Client installiert sein.

  1. Klicken Sie mit der rechten Maustaste auf den aktualisierten Trunk des lokalen Windows-Computers
  2. Wählen Sie TortoiseSVN
  3. Klicken Sie auf Zweig / Tag
  4. Wählen Sie den Pfad An im SVN-Repository aus. Beachten Sie, dass die Ziel-URL entsprechend dem angegebenen Pfad und Zweignamen aktualisiert wird
  5. Erstellen Sie keinen Ordner innerhalb von Zweigen im Repository-Browser
  6. Zweigpfad hinzufügen. Zum Beispiel Zweige /
  7. Fügen Sie eine aussagekräftige Protokollnachricht als Referenz hinzu
  8. Klicken Sie auf OK. Dadurch wird ein neuer Ordner auf dem lokalen System erstellt
  9. Überprüfen Sie den in einem neuen Ordner erstellten Zweig
Prashanth
quelle