2009-03-30 4 views
216

Mögliche Duplizieren:
What do “branch”, “tag” and “trunk” really mean?Was ist Stamm, Zweig und Tag in Subversion?

Was ist ein Stamm, Zweig und Tag in Subversion und was sind die besten Praktiken, sie zu benutzen?

Welche Tools kann ich für Subversion in Visual Studio 2008 verwenden?

+0

... kombiniert mit: http://stackoverflow.com/questions/453481/subversion-plugin-to-visual-studio –

+2

http://stackoverflow.com/questions/16142: "* [Was tun" Zweig "," Tag "und" trunk "wirklich gemein?] (Http://stackoverflow.com/questions/16142/what-do-branch-tag-and-trunk-really-mean) *". –

Antwort

275

Die Stamm ist die Hauptlinie der Entwicklung in einem SVN-Repository.

Ein Zweig ist eine Nebenlinie der Entwicklung erstellt, um größere, experimentelle oder störende Arbeit ohne lästige Benutzer der Kofferraum-Version zu machen. Außerdem können Verzweigungen verwendet werden, um Entwicklungslinien für mehrere Versionen desselben Produkts zu erstellen, beispielsweise um Backfixes in eine stabile Version zu portieren.

Schließlich sind Markierungen Markierungen, um bemerkenswerte Revisionen in der Geschichte des Repositorys hervorzuheben, normalerweise Dinge wie "dies wurde als 1.0 veröffentlicht".

Siehe die HTML-Version von "Version Control with Subversion", insbesondere Chapter 4: Branching and Merging oder kaufen Sie es in Papier (z. B. von amazon) für eine eingehende Diskussion der technischen Details.

Wie andere (zum Beispiel Peter Neubauer unten) die zugrunde liegende Implementierung als /tags/branches und /trunk Verzeichnisse ist nur conventional und nicht in irgendeiner von den Werkzeugen erzwungen Art und Weise. Die Verletzung dieser Konventionen führt überall zu Verwirrung, da dies die Gewohnheiten und Erwartungen anderer verletzt, die auf das Repository zugreifen. Es ist besonders darauf zu achten, dass keine neuen Änderungen an Tags vorgenommen werden, die sollten eingefroren werden.


Ich verwende TortoiseSVN aber keine Visual Studio Integration. Ich lasse den "Check for modifications" -Dialog die ganze Zeit über auf dem zweiten Monitor laufen, damit ich verfolgen kann, welche Dateien ich angefasst habe. Aber siehe die "Best SVN Tools" Frage, für weitere Empfehlungen.

+5

Ich denke, Ankh ist das Beste für mich. Ich kann fast alles direkt im Visual Studio machen. Danke !!! –

+1

Grundsätzlich sind die Antworten von @ Peter-Neubauer und KOGI (unten) wohl eher zutreffend. Wie sie bemerkt haben, erklärt David Schmitts Antwort hier einfach die Convention für die Art und Weise, wie diese Verzeichnisse normalerweise verwendet werden - aber es gibt tatsächlich nichts Magisches an diesen Ordnern per se oder wie sie verwendet werden. Danke an David Schmitt, aber +1 an die anderen, um diesen entscheidenden Unterschied aufzuzeigen. – rondoagogo

+2

"Argwöhnlich" das OP fragte nach den besten Praktiken, nicht die (IMHO ziemlich schwach) Implementierung von denen. –

17

Ein guter Ort, um über Subversion zu lernen, ist http://svnbook.red-bean.com/.

Soweit Visual Studio Tools betroffen sind, mag ich AnkhSVN, aber ich habe das VisualSVN Plugin noch nicht versucht.

VisualSVN verlässt sich auf TortoiseSVN, aber TortoiseSVN ist auch eine nette Ergänzung zu Ankh IMHO.

+0

Woher hast du die Vorstellung, dass Ankh auf Schildkröte angewiesen ist? Afaik ist das nicht der Fall, nur für VisualSVN. – Joey

+0

Ich weiß nicht, wo ich diesen Eindruck habe, aber ich dachte, dass es erforderlich war. In jedem Fall finde ich es schön, Tortoise als Kompliment zu haben, aber danke, dass ich mich darum gekümmert habe! –

+0

Ich habe Ankh installiert ohne Schildkröte. –

7

Ein Stamm wird als Hauptcode-Basis betrachtet, eine Zweigstelle des Stammes. Sie erstellen z. B. einen Zweig, wenn Sie ein neues Feature implementieren möchten, aber den Haupttrunk nicht beeinflussen möchten.

TortoiseSVN hat gute Dokumentation und ein großes Diff-Tool.

Ich benutze Visual Studio, und ich verwende VisualSVN und TortoiseSVN.

9

Um Subversion in Visual   Studio   2008 zu verwenden, installieren Sie TortoiseSVN und AnkhSVN.

TortoiseSVN ist eine wirklich einfache Versionierung/Versionskontrolle/Source-Control-Software für Windows zu verwenden. Da es sich nicht um eine Integration für eine bestimmte IDE handelt, können Sie sie mit den von Ihnen gewünschten Entwicklungswerkzeugen verwenden. TortoiseSVN ist kostenlos zu benutzen. Sie brauchen keinen Kredit oder ein Jahresgehalt, um es zu nutzen.

AnkhSVN ist ein Subversion SourceControl Provider für Visual Studio. Mit der Software können Sie die gängigsten Versionskontrollvorgänge direkt in der Microsoft Visual Studio-IDE ausführen. Mit AnkhSVN müssen Sie Ihre IDE nicht mehr verlassen, um Aufgaben wie den Status Ihres Quellcodes, das Aktualisieren Ihrer Subversion-Arbeitskopie und das Übernehmen von Änderungen auszuführen. Sie können sogar Ihr Repository durchsuchen und Ihr bevorzugtes Diff-Tool anschließen.

5

Wenn Sie neu auf Subversion möchten Sie vielleicht auf SmashingMagazine.com diesen Beitrag überprüfen, entsprechend Titel Ultimate Round-Up for Version Control with SubVersion.

Es umfasst die ersten Schritte mit SubVersion mit Links zu Tutorials, Referenzmaterialien, & Buchvorschläge.

Es deckt Tools (viele sind kompatible Windows), und es erwähnt AnkhSVN als ein Visual Studio-kompatibles Plugin. Die Kommentare erwähnen auch VisualSVN als Alternative.

4

Ein fantastisches kostenloses Dienstprogramm zu verwenden, wenn Sie ein Team von Entwicklern haben, ist SVN Monitor. Es dient als Herzschlag für Ihren Baum und sagt Ihnen, wenn es Updates, mögliche Konflikte, etc. gibt. Für einen Solo-Entwickler ist es nicht ganz so nützlich.

32

Die Verzeichnisse "trunk", "branches" und "tags" sind Konventionen in Subversion. In Subversion müssen Sie diese Verzeichnisse nicht haben und ihnen keine besondere Bedeutung zuweisen. Diese Konvention ist jedoch sehr üblich und, wenn Sie keinen wirklich guten Grund haben, sollten Sie der Konvention folgen. Die Buch-Links, die andere Leser gegeben haben, beschreiben die Konvention und wie man sie benutzt.

22

Die Antwort von David Schmitt fasst die Dinge sehr gut zusammen, aber ich denke, es ist wichtig zu beachten, dass für SVN die Begriffe "Branch", "Tag" und "Trunk" nichts bedeuten. Diese Begriffe sind rein semantisch und betreffen nur die Art und Weise, wie wir als Benutzer des Systems diese Verzeichnisse behandeln. Man könnte sie leicht "Haupt", "Test" und "Freigaben" nennen. Solange jeder, der das System benutzt, versteht, wie man jeden Abschnitt richtig benutzt, ist es egal, wie sie heißen.

+0

Ja, es ist wahr. Subversion beschränkt Sie nicht mit solchen Namenskonventionen. Es ist nur eine Empfehlung. Danke für deine Antwort, es hat geholfen. –

+0

So kennt zum Beispiel Subversion das Konzept der "Revision"? Ist jedes einzelne Commit nur eine Momentaufnahme des gesamten Repositorys? Woher weißt du, ob jemand versehentlich 50% der Release-Tags mit einem seiner Check-Ins löscht? Würdest du nicht ständig darauf achten müssen? –

+0

@ebyrob Es ist eine Weile her, seit ich SVN verwendet habe, aber IIRC, SVN verfolgt Diffs zwischen Revisionen, NICHT ganze Snapshots. Unabhängig davon und in jedem VCS gibt es die Möglichkeit, Release-Tags (oder andere Dateien/Ordner), die Sie nicht löschen möchten, zu "löschen". Ich setze "delete" in Anführungszeichen, weil es nie wirklich weg ist, es ist immer in der Geschichte und kann immer wiederhergestellt werden (außer vielleicht 1 * sehr * Randfall in GIT, denke ich) – KOGI

Verwandte Themen