Ich suche derzeit nach dem besten Weg, um einen SVN-Spiegel einzurichten. Ich sehe derzeit drei Möglichkeiten, die alle ihre eigenen Nachteile haben:
- Haben Sie einen SVN-Post-Commit-Hook, der über svnsync blockiert und synchronisiert. Das Problem hierbei ist offensichtlich, dass das Commit blockiert wird, bis die Daten an den Spiegel übertragen werden.
- Haben Sie einen SVN-Post-Commit-Hook, der nicht blockiert und über svnsync synchronisiert. Hier sehe ich das folgende, subtilere Problem: Stellen Sie sich vor, jemand checkt eine BIG-Datei ein und jemand anderes checkt kurz danach eine kleine Datei ein. Da das Commit nicht blockiert ist, können zwei svnsync-Prozesse gleichzeitig ausgeführt werden und die kleine Datei kann die BIG-Datei auf dem Weg zum Spiegel überholen (dies scheint sehr zeitkritisch und unwahrscheinlich, obwohl dies im Prinzip möglich ist). Ihre Überarbeitung würde tauschen.
- Synchronisieren Sie wie alle fünfzehn Minuten mit einem Cron-Job. Gleiches Problem, wenn ein Commit länger als 15 Minuten dauert und offensichtlich diese Zeitverzögerung.
Habe ich eine Möglichkeit vergessen? Habe ich etwas falsch gemacht? Irgendwelche Ideen? Danke schon!
Vielleicht sollte ich beachten, dass die zweite Möglichkeit die von verschiedenen Websites vorgeschlagene ist. Siehe z. B. http://www.kirkdesigns.co.uk/mirror-svn-repository-svnsync
Antworten:
Sie könnten einen ähnlichen Ansatz wie bei Atlassian ausprobieren
https://www.atlassian.com/blog/archives/subversion_replication_at_atla?_ga=2.217251286.1933127788.1517539727-1159165484.1517539727
Haftungsausschluss: Ich bin derzeit ein Mitarbeiter von Atlassian, war jedoch nicht an der Implementierung dieser Lösung beteiligt (nur deren Wartung).
Wie ich oben im Kommentar sagte, verhält sich svnsync, das von einem Remote-Repository ausgeführt wird, deterministisch. Es können keine Änderungssätze außerhalb der Reihenfolge angewendet werden. Das einzige Problem bei der Verwendung eines Remote-Repositorys ist die Verzögerung aufgrund der Weitergabe von Änderungssätzen.
quelle