2009-08-05 3 views
4

Ich habe ein externes SVN-Repository ausgecheckt, auf das ich ein paar Patches angewendet habe.
(Das Anwenden der Patches kann nur aufgrund von Konflikten manuell durchgeführt werden.)Wie man eine lokal modifizierte Kopie eines externen SVN-Repository verwaltet

Jetzt möchte ich in der Lage sein, diese lokale Kopie des Remote-Repository ordnungsgemäß zu verwalten.
(Ich habe keine anderen Zugriffsrechte, als auf dem Remote-Repository zu lesen.)

Vor allem, da muss ich in der Lage sein zu Check-in meinem lokalen Änderungen in einer Art Steuersystem Quelle manuelle Schritte waren beteiligt an der Anwendung der Patches.

Und zweitens möchte ich immer noch Updates aus dem Remote-Repository erhalten können.

Was ist der beste Weg, dies zu erreichen?

Antwort

1

Ich denke, ich könnte ein anderes Quellcodeverwaltungssystem für meine lokale Kopie als Svn verwenden?
Zum Beispiel Einchecken meiner vollständigen lokalen Kopie einschließlich der .svn-Ordner in CVS.

Oder ich könnte auch git-svn verwenden, aber ich bin mir nicht sicher, ob das die beste Lösung ist.

Haben Sie bessere Vorschläge?

Update: Ja, git-svn scheint die bevorzugte Lösung zu sein.

Aber für die Aufzeichnung könnte man auch hg with svn verwenden.

+1

git-svn wäre eigentlich eine ziemlich gute Lösung. Das Hauptproblem hier ist, dass svn nicht dafür ausgelegt ist, "lokale Repositories" zu haben - normalerweise würde das, was du machst, in einer Verzweigung gemacht worden sein, wenn es in svn gemacht würde. – Amber

+0

+1 für git-svn, es ist der beste Weg, um diese Art von Fall zu verwalten. –

0

Ich verstehe SVK kann dies in einer reinen Subversion-Umgebung tun (ich habe es für so etwas vor ein paar Jahren verwendet). Wenn Sie jedoch Git ausprobieren möchten, dann ist git-svn möglicherweise eine noch bessere Wahl. Das würde ich heute benutzen.

Eine Einschränkung, obwohl - wenn Sie Windows verwenden, dann kann es Probleme geben, git-svn zu arbeiten. Ich hatte begrenzten Erfolg in diesem Bereich und verwende deshalb git-svn nicht auf Windows.

0

Mit svnsync können Sie eine Kopie eines SVN-Repositorys behalten, aber ab dem Zeitpunkt, an dem Sie Ihre lokale Kopie ändern, können Sie die Synchronisierung nicht fortsetzen.

Ich würde vorschlagen, Git für Ihre abschließende tägliche Arbeit zu verwenden. Bewahre eine lokale Arbeitskopie des Svn-Repositorys und stelle sie unter git control. Das wird Git Master sein. Klonen Sie dieses Repository an einem anderen Ort, Zweig-Master und arbeiten Sie dort, Ihre Patches direkt auf den Zweig anwenden.

Regelmäßig aktualisieren Sie Ihre Svn wc und ziehen Sie es in Ihr Git-Repository, als Master. Dann füge Master mit deinem Zweig zusammen.

Die verwirrende Sache ist, dass Sie "zwei git Benutzer" haben werden, eine wird die lokale SVN Repo Arbeitskopie sein und die andere Ihre gepatchte Niederlassung.

1

Eine herkömmliche Methode ist eine exportierte Version des Codes, die Sie in Ihr eigenes Repository einchecken. Wenn der Code aktualisiert wird, werden sie in Ihrem Repo zusammengeführt. Sie können die Verschmelzung durch geschickte Verzweigung (Nachschlagewerkzweige) unterstützen. Kennzeichnen Sie den Code in Ihrem Repo entsprechend den Versionen des exportierten Codes, den Sie eingecheckt haben.

+0

Ich denke du bist richtig dran. Es ist ein einfaches Problem der Verwaltung mehrerer Zweige und muss nicht durch die Besonderheiten der zu verwendenden Werkzeuge komplizierter gemacht werden. Es sollte möglich sein, in den meisten modernen Versionskontrollsystemen zu erreichen. Ich hatte ein sehr ähnliches Problem, zu dem ich einige großartige Antworten erhielt: http://stackoverflow.com/questions/1683096/subversion-merging-a-vendors-source-code-releases-into-mainline-at-regular-inte – RjOllos

Verwandte Themen