Ich erstelle mein erstes Projekt in Subversion . Soweit habe ich
branches
tags
trunk
Ich denke, ich muss sofort Zweige singulär machen und von vorne anfangen. Zweigstellen aktualisieren ist die Norm.
Ich habe im Kofferraum gearbeitet und den Inhalt wie folgt in Tags verschoben.
mkdir tags/1.0
cp -rf trunk/* tags/1.0
svn add tags/1.0
svn commit -m " create a first tagged version"
Mein Bauch sagt mir, dass dies völlig falsch ist, und ich sollte eine Beziehung zwischen den verwendeten Dateien aufrechterhalten svn copy
. Die Dateien, die ich auf diese Weise erstelle, haben keine Beziehung zueinander, und ich bin sicher, dass ich die Subversion-Funktionen verpassen werde. Hab ich recht?
Soll ich für die einzelnen Dateien eine SVN-Kopie verwenden?
mkdir tags/1.0
svn add tags/1.0
svn copy trunk/file1 tags/1.0
svn copy trunk/file2 tags/1.0
svn copy trunk/file3 tags/1.0
svn commit -m " create a first tagged version"
Soll ich svn copy für das gesamte Verzeichnis verwenden?
svn copy cp -rf trunk tags/1.0
svn commit -m " create a first tagged version"
Antworten:
Sie haben insofern Recht, als es nicht "richtig" ist, Dateien zum Tags-Ordner hinzuzufügen.
Sie haben richtig geraten, dass dies
copy
die zu verwendende Operation ist. Damit kann Subversion den Verlauf dieser Dateien verfolgen und sie (ich nehme an) viel effizienter speichern.Nach meiner Erfahrung ist es am besten, Kopien ("Schnappschüsse") ganzer Projekte zu erstellen, dh aller Dateien vom Stammauscheckort. Auf diese Weise kann der Schnappschuss als eigenständige Darstellung des gesamten Projektstatus zu einem bestimmten Zeitpunkt für sich allein stehen.
Dieser Teil von "Das Buch" zeigt, wie der Befehl normalerweise verwendet wird.
quelle
Verwenden:
Kurzschrift:
quelle
Wie von @victor hugo festgestellt, ist die "richtige" Methode die Verwendung von svn copy. Es gibt jedoch eine Einschränkung. Das auf diese Weise erstellte "Tag" ist kein echtes Tag, sondern eine exakte Kopie der angegebenen Revision, es handelt sich jedoch um eine andere Revision. Wenn Ihr Build-System also irgendwie die svn-Revision verwendet (z. B. die mit 'svn info' erhaltene Nummer in die Version des von Ihnen erstellten Produkts einbezieht), können Sie nicht genau dasselbe Produkt aus einem Tag (dem Das Ergebnis enthält die Überarbeitung des Tags anstelle des ursprünglichen Codes.
Es sieht so aus, als ob es in svn keine Möglichkeit gibt, ein wirklich richtiges Meta-Tag zu erstellen.
quelle
echo "{ 'svnRev': \"`svn info | awk '/Last Changed Rev:/{print $4}'`\" }" >svnver.txt
`awk
, diese Informationen direkt von svn zu und zu erhalten, indem Sie die--show-item
Option verwenden:svn info --show-item last-changed-revision
Verwenden Sie einfach dies:
(Natürlich alles in einer Zeile.) Sie sollten immer einen Zweig des gesamten Trunk-Ordners und des Inhalts erstellen. Es ist natürlich möglich, Teile des Rumpfes zu verzweigen, aber dies wird fast nie eine gute Praxis sein. Sie möchten, dass sich der Zweig genau so verhält wie der Trunk jetzt, und dazu müssen Sie den gesamten Trunk verzweigen.
Eine bessere Zusammenfassung der SVN-Nutzung finden Sie in meinem Blog: SVN Essentials und SVN Essentials 2
quelle
Könnte Schildkröte verwenden:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-branchtag.html
quelle
@ Victor Hugo und @ Unwind sind korrekt, und die Lösung von Victor ist bei weitem die einfachste. Achten Sie jedoch auf externe Elemente in Ihrem SVN-Projekt. Wenn Sie auf externe Bibliotheken verweisen, bleibt die Revisionsreferenz der externen Bibliothek (ob Tag, HEAD oder Nummer) unverändert, wenn Sie Verzeichnisse mit externen Referenzen kennzeichnen.
Es ist möglich, ein Skript zu erstellen, das diesen Aspekt des Tagging behandelt. Eine Diskussion zu diesem Thema finden Sie in diesem SO-Artikel: Taggen eines SVN-Checkout mit externen Elementen
quelle
Eine weitere Option zum Markieren eines Subversion-Repositorys besteht darin, das Tag der Eigenschaft svn: log wie folgt hinzuzufügen:
Ich habe kürzlich angefangen zu denken, dass dies der "richtige" Weg ist, um zu markieren. Auf diese Weise erstellen Sie keine zusätzlichen Revisionen (wie bei "svn cp") und können trotzdem alle Tags einfach extrahieren, indem Sie grep für die Ausgabe von "svn log" verwenden:
Auf diese Weise können Sie Tags bei Bedarf nahtlos löschen . So werden die Tags zu einer vollständigen Meta-Information, und ich mag es.
quelle
Alles was Sie tun müssen, um den URL-Pfad zu ändern. Dieser Befehl erstellt das neue Verzeichnis "tagDestination". In der zweiten Zeile werden Sie gegebenenfalls über die vollständigen Fehlerdetails informiert. Erstellen Sie die Variable svn env, wenn sie nicht erstellt wurde. Kann überprüfen (Cmd: - set, Powershell: - Get-ChildItem Env :) Der Standardpfad lautet "C: \ Programme \ TortoiseSVN \ bin \ TortoiseProc.exe".
quelle
Versuche dies. Für mich geht das:
quelle