Wie kopiert man ein SVN-Repository regelmäßig, ohne die Ziel-Tags und -Zweige zu verlieren?

Wie kopiert man ein SVN-Repository regelmäßig, ohne die Ziel-Tags und -Zweige zu verlieren?

Wir möchten ein vollständiges Repository herunterladen (exportieren, auschecken) und regelmäßig in ein anderes Repository importieren (mit allen Commit-Nachrichten), damit wir eine Tag/Branch-Strategie implementieren können.

Hintergrund: Unser Auftragnehmer verpflichtet sich nur zum Kofferraum und erverweigert(bleiben wir technisch), um Tags zur Versionierung jeder neuen Bibliothek zu erstellen (damit wir mit dem Änderungsmanagement Schritt halten können).

Daher möchten wir ihre Bibliothek jeden Tag in unseren Trunk importieren und gemäß unseren Richtlinien Tags und Zweige erstellen.

Ist das schon einmal jemandem passiert?

Antwort1

Es gibt viele plausible Lösungen in der SO-FrageSo synchronisieren Sie zwei Subversion-Repositorys.

Die Option, die auf Sie zutreffen könnte, schlägt die Verwendung von vorSVKwas im Grunde eine dezentrale Version von SVN ist.

Antwort2

Obwohl es ziemlich unkonventionell ist, glaube ich, dass SiesollenDies können Sie mit Hilfe von tun svnadmin.

Im Repository des Auftragnehmers können Sie Folgendes ausführen:

svnadmin dump --incremental -r <LOWER REVISION>:<UPPER REVISION> /path/to/bad_repo > dumpfile

dann in Ihrem Repository:

svnadmin load --parent contractors_stuff/ /path/to/your/repository < dumpfile

Dadurch werden Revisionen aus dem Repository des Auftragnehmers schrittweise dem contractors_stuffVerzeichnis in Ihrem realen Repository hinzugefügt. Wie gesagt, theoretisch sollte es funktionieren, aber das ist definitiv nicht die beabsichtigte Verwendung dieser Funktion. Tests sind auf jeden Fall zuerst auf einem Nicht-Produktionssystem erforderlich, und es würde wahrscheinlich nicht funktionieren, wenn Sie in diesem Teil Ihres realen Repositorys Änderungen vornehmen würden.

Im Idealfall sagen Sie Ihrem Auftragnehmer, er solle sich zusammenreißen und klare Verhältnisse schaffen.

Eine alternative technische Lösung wäre die Verwendung eines anderen Versionskontrollsystems wie Mercurial, Git oder eines anderen DCVS, das diesen Arbeitsablauf besser unterstützen würde.

verwandte Informationen