Ich habe vor ungefähr 9 Monaten angefangen, SVN zu verwenden, und es war, gelinde gesagt, ein Game Changer. Obwohl ich mich immer noch ein bisschen verloren fühle. Ich habe das Gefühl, dass ich noch viel mehr nutzen muss, um meine Anwendungsentwicklung wirklich voranzutreiben.
Zum Beispiel
Ich möchte in der Lage sein, flüchtige / größere Änderungen in eine Art "Sub-Repository" oder so etwas unter Quarantäne zu stellen. Ich stelle fest, dass größere Änderungen kleinere Fehlerbehebungen behindern, die sehr dringend sind. Wie kann ich ein einfaches Update pushen, ohne unvollständigen oder fehlerhaften Code zu pushen?
version-control
Derek Adair
quelle
quelle
Antworten:
Um Ihr Beispiel anzusprechen, haben Sie drei Möglichkeiten, dies zu tun:
svn commit file1 path1/file2 path2
file1, path1 / file2 und jede Änderung unter path2 ein.svn copy svn://hostname/projectname/trunk svn://hostname/branches/branch-for-feature-X
. Jetzt können Sie Ihre Arbeitskopie an den neuen Speicherort wechseln: svn switchsvn switch svn://hostname/projectname/branches/branch-for-feature-X
. Wenn Sie in den Bugfixing-Modus wechseln, übernehmen Sie Ihre tatsächlichen Änderungen, wechseln Ihre Arbeitskopie zurück in den Trunk, beheben den Fehler und das Commit und wechseln die Arbeitskopie zurück in Ihren Feature-Zweig. Wenn Sie mit der Entwicklung der Funktion fertig sind, können Sie sie wieder in den Trunk einbinden.Für den beschriebenen einfachen Fall verwenden Sie normalerweise # 1 (ich benutze am häufigsten), manchmal # 2. Das Arbeiten mit Zweigen (Fall 3) ist komplizierter ( lesen Sie mehr ), ermöglicht jedoch mehr Tricks. Aber Zweige, die Ihrer Beschreibung eines Subrepositorys entsprechen.
Abgesehen von Ihrem Beispiel kann ich nicht viel sagen. Es gibt viele Dinge über Subversion, aber ich weiß nicht, was Sie bereits verwenden und was Sie für Ihr Projekt benötigen. Um mehr über SVN zu erfahren, ist das SVN-Buch eine großartige Ressource: http://svnbook.red-bean.com/
quelle
Sie können Code in verschiedenen Sandboxen auschecken, anstatt nur eine Kopie zu erstellen und dort alle Änderungen vorzunehmen.
Sie könnten also eine Ordnerstruktur haben, die ungefähr so aussieht:
usw.
Alle diese können an derselben Stelle in Ihrem SVN ausgecheckt werden, z
http://mysvnrepo/trunk
.Auf diese Weise können Sie aus Ihrer Sandbox zur Fehlerbehebung ein Commit durchführen, ohne die Entwicklung von Features zu beeinträchtigen. Sie müssen jedoch
svn update
aus anderen Sandboxen ausführen , um die für die Fehlerbehebung festgeschriebenen Änderungen zu erhalten.quelle
Haben Sie sich Subversion Branches überhaupt angesehen?
Eine übliche Technik besteht darin, Ihren Kofferraum stabil zu halten und bei Bedarf wichtige Korrekturen vorzunehmen. Anschließend erstellen Sie für jede neue wichtige Arbeit einen Zweig . Entwickler, die an diesem Projekt arbeiten, überprüfen den Zweig und verpflichten sich zum Zweig. Dies wirkt sich nicht auf den Trunk aus, bis Sie sich entscheiden, den Zweig im Rahmen Ihrer endgültigen Integration wieder mit dem Haupt-Trunk zusammenzuführen.
Ein anderer Ansatz besteht darin, eine Verzweigung für eine bestimmte Version zu haben, um zu verhindern, dass versehentlich andere Arbeiten am Trunk ausgeführt werden, die Probleme verursachen. Sie können den 'Release Branch' nach Bedarf beheben und diese Korrekturen dann wieder in den Kofferraum zurückklappen, wenn Sie bereit sind.
Ihre Entwickler können mehrere Arbeitskopien auschecken lassen - den Trunk und alle Zweige - oder mit dem
svn switch
Befehl zwischen dem Trunk und einem bestimmten Zweig wechseln.Ich empfehle nicht, viele 'Sandbox'-Arbeitskopien zu haben, die Sie separat auschecken, da (a) dies die Zusammenarbeit mit anderen verbietet und (b) es zu einfach ist, versehentlich noch nicht funktionierende Änderungen am Haupt-Trunk vorzunehmen.
quelle
Die aktuelle Größe meiner Arbeitskopie beträgt 10 GB mit mehr als 50.000 Dateien. Ich kann mehrere Kopien für verschiedene Zweige haben, aber es dauert eine Weile, bis die neue Kopie erstellt ist!
Wenn ein dringender Fehler auftritt, speichere ich normalerweise alle meine Änderungen in einem Patch, setze alles zurück, arbeite an dem Fehler und verpflichte ihn und wende dann den von mir gespeicherten Patch an ... Viel einfacher und schneller als eine neue Arbeitskopie zu erhalten. Wenn ich dies oft tun müsste, hätte ich zwei Arbeitskopien: eine für langfristige Änderungen, die andere für Fehlerkorrekturen.
quelle