it-swarm.com.de

Wie synchronisiere ich zwei Subversion-Repositories?

Meine Firma hat eine Tochtergesellschaft mit einer langsamen Internetverbindung. Unsere Entwickler dort leiden unter der Interaktion mit unserem zentralen Subversion Server. Ist es möglich, einen Slave/Spiegel für sie zu konfigurieren? Sie würden lokal mit dem Server interagieren und alle Festschreibungen würden automatisch mit dem Master-Server synchronisiert.

Dies sollte für die Entwickler so transparent wie möglich funktionieren. Benutzerfreundlichkeit ist ein Muss.

Bitte keine Vorschläge zur Änderung unseres Versionskontrollsystems.

57
neves

In Subversion 1.5 wurde die Proxy-Unterstützung eingeführt, wenn Sie http zum Hosten Ihres Repositorys verwenden. Entwickler können ihre Arbeitskopien vom Slave auschecken. In diesem Fall wird der Slave für alle schreibgeschützten Vorgänge (Diff, Protokoll, Aktualisierung usw.) verwendet. Beim Festschreiben übergibt der Slave alle Schreibvorgänge transparent an den Master.

29
clawrence

Dies ist möglich, aber nicht unbedingt einfach: Das Problem, das Sie lösen möchten, ist gefährlich nahe daran, eine verteilte Entwicklungsumgebung einzurichten, für die SVN nicht genau entwickelt wurde.

Der SVN-Spiegel Weg

Sie können svn mirror wie in der SVN-Buchdokumentation beschrieben, um einen read-only Spiegel Ihres Master-Repositorys zu erstellen. Ihre Entwickler interagieren jeweils mit dem Spiegel, der ihnen am nächsten liegt. Benutzer des Slave-Repository müssen jedoch verwenden

svn switch --relocate master_url

bevor sie sich verpflichten können, müssen sie sich daran erinnern, wieder auf den Sklaven zurückzuziehen, sobald sie fertig sind. Dies kann mithilfe eines Wrapper-Skripts um die Repository-Änderungsbefehle in SVN automatisiert werden, wenn Sie den Befehlszeilenclient verwenden. Denken Sie daran, dass die Operation zum Verschieben des Standorts, während sie schnell ausgeführt wird, etwas Overhead verursacht. (Und achten Sie darauf, die Repository-UUID zu duplizieren - siehe die SVN-Dokumentation .)

[Bearbeiten - Überprüfen der TortoiseSVN Dokumentation Es scheint, dass Sie TortoiseSVN Hook-Skripte Client-Seite ausführen haben können. Möglicherweise können Sie zu diesem Zeitpunkt ein Pre/Post-Commit-Skript erstellen. Entweder das, oder Sie versuchen zu prüfen, ob Sie die TortoiseSVN-Automatisierungsschnittstelle verwenden können.

Der SVK-Weg

svk ist eine Reihe von Perl-Skripten, die einen verteilten Spiegelungsdienst über SVN emulieren. Sie können es so einrichten, dass der lokale Zweig (der Spiegel) von mehreren Entwicklern gemeinsam genutzt wird. Dann ist die grundlegende Verwendung für die Entwickler vollständig transparent. Sie müssen den svk-Client verwenden, um Kirschen zu pflücken, zu verschmelzen und zu starren. Es ist machbar, wenn Sie sich mit den verteilten Konzepten beschäftigen können.

Der Git-Svn Weg

Das habe ich selbst nie benutzt, aber entfernte Entwickler könnten git auch lokal verwenden und das git-svn Gateway für die Synchronisation verwenden.

Schlussworte

Es hängt alles von Ihrer Entwicklungsumgebung und dem Grad der Integration ab, den Sie benötigen. Abhängig von Ihrer IDE (und wenn Sie SCM ) ändern können, möchten Sie möglicherweise einen Blick auf andere vollständig verteilte SCMs werfen (Denken Sie an Mercurial / Bazaar / Git /...), die die verteilte Entwicklung von Anfang an unterstützen.

49
Jean

Sie sollten versuchen Das SVK-Versionskontrollsystem

SVK ist ein dezentrales Versionskontrollsystem, das mit dem robusten Subversion-Dateisystem erstellt wurde. Es unterstützt die Repository-Spiegelung, den getrennten Betrieb, das verlaufssensitive Zusammenführen und die Integration in andere Versionskontrollsysteme sowie beliebte visuelle Zusammenführungstools.

Unter diesem Link finden Sie Text zu Verwenden von SVK zum Synchronisieren von SVN-Repositorys

6
Robert Vuković

Wenn eines der Repositorys vollständig schreibgeschützt ist, können Sie 'svnsync' verwenden, um es mit dem Master-Repository auf dem neuesten Stand zu halten. Dieses Tool wird häufig in Kombination mit der Proxy-Unterstützung verwendet, um ein Master-Slave-Setup zu erstellen.

Z.B. Apache führt dies aus, um sein Repository auf verschiedene Kontinente zu spiegeln. Das Master-Repository befindet sich in den USA. Wenn ich jedoch von der EU aus auf das Repository zugreife, erhalte ich einen lokalen Spiegel, der genauso gut funktioniert wie der Master-Server.

2
Bert Huijben

Das inotify-Tool funktioniert gut für mich, Details sind auf dieser Website aufgeführt:

http://planet.admon.org/synchronize-Subversion-repositories-with-inotify-tools/

1
admon_org

Es gibt eine kommerzielle Lösung, die eine echte Aktiv-Aktiv-Replikation (nicht Master-Slave) von Subversion-Repositorys bietet, wenn Sie Leistung und Datensicherheit benötigen, die über die von svnsync bereitgestellten "Subversion MultiSite" hinausgehen.

Haftungsausschluss: Ich arbeite für das Unternehmen, das diese Lösung herstellt

1
james creasy

VisualSVN Servers Multisite Repository Replication wurde für diesen Fall entwickelt.

Sie können das Master-Repository in Ihrem Hauptbüro behalten und mehrere beschreibbare Slave-Repositorys an den Remotestandorten einrichten.

Dies sollte für die Entwickler so transparent wie möglich funktionieren. Benutzerfreundlichkeit ist ein Muss.

  • Die Replikation zwischen den Slaves und dem Master erfolgt transparent und automatisch.

  • Jedes Master- und Slave-Repository ist vom Standpunkt des Benutzers aus ein beschreibbares Subversion-Repository.

  • Funktioniert sofort und kann mit ein paar Klicks über den VisualSVN Server Manager konfiguriert werden MMC Konsole.

VisualSVNServerManagerConsoleMultisite

1
bahrep