2 Stimmen

Svn Repo-Synchronisierung

Ich möchte eine Kopie des Codes eines Drittanbieters in meinem SVN Repo behalten. (damit ich Berichte und Tests durchführen kann)

Wie kann ich einen bestimmten Ordner/Pfad aus ihrem Repo in mein Repo synchronisieren?

Natürlich kann ich nicht einfach einen Export aus ihrem Repository durchführen und in mein Repository übertragen, weil dann Löschungen fehlen würden.

Extrapunkte für eine automatisierte Lösung.

svn:externals könnte verwendet werden, wäre aber nicht ideal. Wenn das 3rd Party Repo ausgeschaltet wäre, hätte ich keinen Zugriff auf den Code.

Danke,

3voto

Eugene Morozov Punkte 13864

Wenn sich der Code des Drittanbieters im SVN-Repository befindet, können Sie svn:externals Eigentum.

2voto

cjs Punkte 23476

Ich mache genau das mit svk .

Es gibt eine Dokumentation auf Spiegeln und svn Repo mit svk aber sie ist nicht sehr gut; vielleicht hilft diese Zusammenfassung des Verfahrens.

  1. Stellen Sie Ihr SVKROOT Umgebungsvariable auf einen geeigneten Pfad für Ihr svk-Repositorium setzen, wenn Sie es nicht am Standardspeicherort unter Ihrem Heimatverzeichnis haben wollen. Beachten Sie, dass dies alles enthält, was Sie jemals mit svk gemacht haben, einschließlich Spiegelungen von mehreren svn-Repos, so dass es ziemlich groß werden kann.

  2. svk init um das Repository zu initialisieren. Sie sollten gefragt werden, ob Sie es initialisieren wollen (falls es nicht bereits existiert). Möglicherweise erhalten Sie danach auch die Fehlermeldung "Command not recognized, try /usr/bin/svk help."; dies scheint ein harmloser Fehler zu sein.

  3. Richten Sie Ihre Spiegel ein und geben Sie den Pfad zu dem Projektarchiv an, das Sie spiegeln möchten, sowie den Pfad innerhalb Ihres svk-Projektarchivs, in dem Sie den Spiegel ablegen möchten, z. B.:

    svk spiegeln sv+ssh://foo.com/data/repo/head/project //mirror/foo.com/project svk-Spiegel sv+ssh://bar.com/data/repo/head/funstuff //mirror/bar.com/funstuff

  4. ausführen. svk sync -a um alle Mirrors zu synchronisieren. Dies führen Sie immer dann aus, wenn Sie Ihre Kopie auf die neueste Version aus den gespiegelten Repos aktualisieren wollen.

    Wenn Sie beim ersten Mal eine Fehlermeldung über das Fehlen des Time::Progress-Moduls erhalten, verwenden Sie wahrscheinlich eine aktuelle Version von Fedora, Ubuntu oder einer anderen Distribution mit einem defekten svk-Paket. Es gibt einige Umgehungslösungen dafür; ich habe einfach sudo cpan Time::Progress um das, was ich brauchte, aus CPAN zu holen.

  5. Machen Sie eine svk co /mirror/foo.com/project um ein Checkout Ihres Projekts zu erhalten. Sie haben natürlich die vollständige Historie und alles andere, nur dass Sie den Befehl svk anstelle des Befehls svn verwenden.

0voto

Evan Punkte 17796

Ich denke svk könnte dies möglich sein. Sie würden sowohl für Ihr Quell- als auch für Ihr Ziel-Repository Mirrors einrichten und zwei Check-Outs haben, die auf denselben Ort zeigen.

Dann ziehen Sie einfach aus dem Quell-Repository und pushen zum Ziel... oder so ähnlich.

Und Sie sollten in der Lage sein, dies mit einem Shell-Skript zu automatisieren, das von einem Cron-Job ausgeführt wird.

-1voto

stepancheg Punkte 4124

Sie sollten wahrscheinlich einen Spiegel von SVN mit einem DVCS-Werkzeug wie Mercurial (mit hgsubversion oder hgsvn) oder Git (git-svn) erstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X