2009-02-24 6 views
51

Ich habe eine Software-App und ich habe einen wichtigen Meilenstein erreicht, Version 2.0.Was ist eine Arbeitskopie und was macht "Switching" bei Tortoise SVN für mich?

Ich beschloss, diese Version als "Version-2.0" zu kennzeichnen, also habe ich diesen Snapshot benannt. Ich habe auch einen Zweig "Version 2.0" erstellt, für den Fall, dass ich etwas reparieren und wieder in meinen Stamm einbinden muss.

Nach dem Lesen der Tortoise SVN-Hilfedatei, informiert es mich, dass ich meine "Arbeitskopie" in einen neu erstellten Zweig wechseln kann.

Was bedeutet das?

Derzeit habe ich:

/Projekt/Trunk/
/Projekt/Tags/
/Projekt/Branchen/

Alle ausgecheckt. Was wäre der Sinn des "Umschaltens"? Momentan gehe ich einfach in meinen/trunk Ordner und mache meine Arbeit. Und als ich mein Tag und meinen Zweig gemacht habe, hat er Ordner in meinem/Tags/und/Branches/Ordner erstellt, nachdem ich ein Update gemacht habe.

Warum sollte ich nicht einfach nach /Branches/Experiemental-v3.0/ gehen und dort meine Arbeit machen, wenn ich wollte?

Kann mir jemand das Konzept von "Working Copy" und "Switching" erklären? Was vermisse ich? Haben die Leute im Allgemeinen nicht das ganze Depot ausgecheckt, ist es das?

Antwort

41

Eine Arbeitskopie ist die Kopie, die Sie in Ihrem Arbeitsbereich ausgecheckt haben. Es spielt keine Rolle, ob es sich um einen Zweig oder um den Stamm handelt. Daran arbeiten Sie.

Sie können zwischen Zweigen (oder korrekteren Kopien) desselben Elternteils mit svn switch wechseln. Das wird im Grunde sagen, was sich zwischen der aktuellen Arbeitskopie und dem Zweig, zu dem ich wechsele, unterscheidet. Es führt dann eine Aktualisierung Ihrer aktuellen Arbeitskopie auf die Revision der Zweigstelle durch, zu der Sie wechseln.

So funktioniert Kopie ist Ihre Kasse, aber es wurde erhalten.

Das Switching ändert nur den Zweig, in dem sich Ihre Arbeitskopie befindet. Stellen Sie sich vor, Sie könnten den Zeiger im Repository ändern, in dem Ihre Commits ausgeführt werden. Mithilfe von Unterschieden von der Branche zu Ihrem Arbeitsbereich.

+4

aber dies beantwortet nicht die Frage, fragt King, dass Leute nicht im Allgemeinen alle Ordner ausgecheckt haben? Wenn ich beispielsweise in den Ordner /Branches/Experimental-v3.0/ gehe und einige Änderungen vornehme, werden die Änderungen bei einem Commit nicht in diesen Ordner übertragen? wer kümmert sich um die Arbeitskopie und "wechselte zu" -Verzeichnis. Was Sie sagen, bedeutet, dass Benutzer nur eine Kopie auf einmal ausgecheckt hat. – shabby

+0

Wenn alle Ordner ausgecheckt sind, bedeutet das nicht, dass Sie eine Replik von svn repo haben. Ich kann einen Ordner haben, der von einem Zweig ausgecheckt wurde, aber wenn ich hier irgendwelche Änderungen beginne, kann ich die Commits in einem anderen Zweig einreichen, wenn ich einen SVN-Schalter gemacht habe. – mtk

+5

Ich schlage vor, keine Angst davor zu haben, so zu arbeiten, wie Sie sind, und alle Ihre Zweige auf Ihrem lokalen Computer überprüfen zu lassen. So arbeiten wir seit über 5 Jahren und machen das Leben einfacher. Es gibt Vorteile, die Sache mit dem Schalter zu benutzen und nur an einer ausgecheckten Filiale zu arbeiten, aber ich wollte beitragen, dass es völlig in Ordnung ist, das nicht zu tun, und die ganze Sache ausgecheckt hat, und das funktioniert gut für uns. –

1

Ihre Arbeitskopie ist ein Ordner auf Ihrer Festplatte, mit dem Sie ein Projekt aus der Subversion ausgecheckt haben. Sie können für diese Arbeitskopie zu einem anderen Projekt wechseln, so dass der versionierte Inhalt dem Inhalt dieses anderen Projekts ähnelt.

Dies ist nützlich, um von Stamm zu Zweig zu wechseln, ohne eine neue Kopie ausleihen zu müssen. So können Sie beispielsweise Zeit für die Erstellung sparen, da die nicht versionierten Dateien (Ihre kompilierten Objekte, Bibliotheken, ausführbaren Dateien) nicht entfernt oder geändert werden.

Dave

3

Arbeitskopie ist Ihre Kopie des Codes, dass Sie ausgecheckt haben. Normalerweise würden Sie nur/Project/trunk/auschecken, nicht die gesamte Struktur des Repositorys. Durch das Wechseln wird der Stamm Ihrer Arbeitskopie geändert. Die Art und Weise, wie Sie mit SVN arbeiten, ist nicht so, wie es gemacht werden sollte.

1

Sie haben den gesamten Projektbaum ausgecheckt - das ist wahrscheinlich nicht das, was Sie wollen. Für die Stammarbeit, prüfe eine Kopie, die auf "Stamm" wurzelt, nicht von der Projektwurzel. In ähnlicher Weise sollten Sie bei Zweigstellen nur die gewünschte Zweigstelle auswählen.

17

Es ist im Allgemeinen nicht notwendig, das gesamte Repository auszuchecken. Zweige und Tags in Subversion sollen billig sein - dh sie erzeugen keine Kopien identischer Dateien, sondern verweisen sie einfach. Wenn Sie das gesamte Repository ausgecheckt haben, wenn jemand aus irgendeinem Grund verzweigt oder Tags erstellt, multipliziert es plötzlich den Speicherplatz auf Ihrer lokalen Festplatte.

Sie können so viele Teile des Repositorys auschecken, wie Sie benötigen. Sie könnten also einen Ordner namens "trunk" haben, der eine Arbeitskopie nur des Stammes ist, eine andere "version2", die eine Arbeitskopie Ihres Zweigs wäre. Auf diese Weise werden alle zusätzlichen Tags, die erstellt werden, nicht ausgecheckt.

Oder Sie können eine Kasse namens 'Projekt' haben, und wenn es ursprünglich auf Stamm verweist, können Sie es zu einem der Zweige oder Tags wechseln - es ist eine Möglichkeit, die ursprüngliche Kasse wieder zu verwenden, so dass Sie nicht ' Ich muss alles noch einmal durchspielen.

Es kann sehr nützlich sein, dies zu tun, Sie arbeiten an Stamm und plötzlich erkennen Sie, dass Sie Ihre Änderungen zu einem Zweig begehen müssen - vielleicht weil sie zu experimentell wurden. Verzweigen Sie dazu von Ihrer Arbeitskopie, wechseln Sie zu der neuen Verzweigung und dann zu Commit, und Ihre Änderungen werden in die Verzweigung und nicht in die Leitung übernommen.

+0

IMHO sollte dies die akzeptierte Antwort sein. Es ist viel besser als das derzeit akzeptierte, da dieses die Frage tatsächlich anspricht. –