2009-07-22 10 views
2

Ich verstehe das Grundkonzept einer Verzweigung und Zusammenführung. Alle Erklärungen, die ich gefunden habe, sprechen davon, den gesamten Stamm zu verzweigen, um ein Zweigprojekt zu erstellen, daran zu arbeiten und es dann wieder zusammenzuführen. Ist es möglich, eine Teilmenge eines Projekts zu verzweigen?SVN Verzweigung in Eclipse (Conceptual)

Ich denke, ein Beispiel wird mir helfen zu erklären, was ich am besten machen möchte. Angenommen, ich habe eine Anwendung mit zehn Dateien file0 bis file10. Alle Dateien sind voneinander abhängig und um eine beliebige Datei testen zu können, müssen alle anderen Dateien im Build enthalten sein. Ich möchte mit Datei0 arbeiten, muss aber keine Änderungen an Datei1 bis Datei10 vornehmen. Kann ich file0 abzweigen, damit Änderungen, die an file0 übergeben werden, etwas wie myrepos/branches/a-branch/file0 aktualisieren, aber alle anderen Dateien in meiner Arbeitskopie werden einfach aus dem Stamm stammen?

Der Grund, warum ich dies tun möchte, ist, dass ich an einer riesigen j2ee-Anwendung mit Zehntausenden von Dateien arbeite und es scheint, als würde die Verzweigung der gesamten Sache sehr lange dauern. Außerdem benutze ich Eclipse mit Subclipse (und damit könnte ich mich irren), aber wenn ich ein Projekt in Eclipse verzweige, muss ich ein neues Eclipse-Projekt einrichten, um auf den Zweig zu zeigen. Leider dauert das Importieren dieses bestimmten Projekts von SVN nach Eclipse aufgrund der Größe der Anwendung mehrere Stunden. Es ist nicht realistisch für mich, so viel Zeit zu verbringen.

Ich nehme an, dass ich die Konzepte falsch haben könnte. Vielleicht erfordert die Verzweigung eines ganzen Projekts gar keine neue Arbeitskopie?

Vielen Dank für jedes Licht zu diesem Thema.

Antwort

2

Branching eine ganze (auch) sehr großer Baum in Subversion ist eine very cheap operation, die faule (O (1) Zeit) Dateikopie macht.

Sie müssen nicht unbedingt Ihre gesamte Arbeitskopie ändern, um nur an einer geänderten Datei zu arbeiten. Sie können svn switch verwenden, um eine Datei oder ein Verzeichnis in Ihrer Arbeitskopie als ausgecheckte Version der Datei in der Verzweigung zu ändern.

+0

Das ist Ihre Lösung quadelirius. Verzweigen Sie das gesamte Projekt (schnell, wie alle anderen Beantworter angemerkt haben), und wechseln Sie zu den Dateien, die Ihnen bei der Verwendung von svn switch wichtig sind. Kein zusätzlicher Arbeitskopierplatz. Vergessen Sie nicht, sie zurückzuschalten, wenn Sie zum Kofferraum zurückkehren möchten. – quark

+0

Ja, ich versuche das jetzt in der Finsternis und es hat genau die Wirkung, um die ich mir Sorgen machte. Die Verzweigung erfolgte sofort, aber der svn-Schalter lief jetzt wahrscheinlich für 5 oder 6 Minuten, da eclipse entschied, dass das gesamte Projekt neu erstellt werden musste. – jcb

+0

25 Minuten in einer Sonnenfinsternis reagiert immer noch nicht. – jcb

1

svn Verzweigung basiert auf Lazy Copy-Mechanismus, so dass Sie sicher alle Ihre Projekt verzweigen können: das würde nicht lange dauern.

Wie in der Frage "How do I branch an individual file in SVN?" erwähnt, könnten Sie eine Teilmenge verzweigen, aber ich glaube, das wäre gefährlich mit der svn:merginfo properties mechanism: Es funktioniert besser, dass die Eigenschaft aus der Wurzel des Projekts gesetzt wird.

+0

Es dauert nicht lange auf dem * Server *. Es erfordert eine zusätzliche Arbeitskopie, die anscheinend der Fragende zu vermeiden versucht. – quark

+0

@quark, yeah Ich möchte dieses Projekt nicht jedes Mal neu importieren müssen, wenn ich verzweigen möchte, aber es klingt wie die einzige Möglichkeit, es zu bearbeiten. – jcb

2

In Subversion erstellt eine Verzweigung einfach eine Kopie einer Hierarchie von Verzeichnissen. Daher können Sie eine Teilmenge verzweigen, aber nur, wenn diese Teilmenge durch eine Hierarchie von Verzeichnissen definiert werden kann.

Kann ich Zweig File0 so Änderungen an begangen File0 wird so etwas wie myrepos/branches/a-Zweig/File0 aber alle anderen Dateien in meinem Arbeitskopie aktualisieren wird einfach aus dem Kofferraum sein?

Um diese Frage zu beantworten: Nein, Sie können nicht eine einzelne Datei verzweigen. Was Sie jedoch stattdessen tun möchten, ist eine Zweigstelle zu machen und dort unter file0 zu arbeiten. Wenn Sie Änderungen an trunk Dateien vornehmen, fügen Sie einfach diese in Ihren Zweig ein, wo Sie an file0 arbeiten.

Auf diese Weise haben Sie immer die neuesten Informationen von trunk, , mit denen Sie die file0 Änderungen unabhängig von der Amtsleitung testen können. Dann können Sie svn switch verwenden, um Ihre "Datei-Linse" zwischen dem Stamm und dem Zweig zu bewegen (aber Vorsicht, Eclipse kann sich über solche Shenanigans beschweren).

1

Verzweigung in SVN ist eine O (1) -Operation. Da SVN intern Lazy Copying verwendet, zahlen Sie nur eine Platzstrafe für das, was Sie ändern.

Also, wenn Sie sich nicht sicher sind, warum nicht weitermachen und das ganze Projekt verzweigen?

(Wie Quark erwähnt, besteht ein Problem mit großen Projekten Verzweigung ist, dass, wenn Sie mehrere Zweige/der Stamm parallel Kasse, das eine Menge von lokalen Speicherplatz nehmen könnten.)

+0

Noch einmal, beachten Sie, was er über die Arbeitskopie sagt. Wenn die Größe der Arbeitskopie kein Problem ist, dann ist dies ein guter Rat. Bei sehr großen Arbeitskopien kann dies jedoch ein Problem sein. – quark

+0

Dies kann nur ein Problem sein, wenn Sie sie parallel auschecken. Beachten Sie, dass er über das Umschalten zwischen den Zweigen geschrieben hat. Ich stimme jedoch zu, dass ein Hinweis auf die Arbeitskopie erforderlich wäre. – sbi

Verwandte Themen