Frage svnsync - konnte die Ziel-Repos nicht sperren


Verwenden von svnsync

$ svnsync --non-interactive sync ${REPO}

Nach einem Abbruch des Prozesses gab es diese Fehlermeldung mit einem erneuten Versuch

Failed to get lock on destination repos, currently held by 'svn.test.com:0e4e0d98-631d-0410-9a00-9330a90920b3'  
...  
Failed to get lock on destination repos, currently held by 'svn.test.com:0e4e0d98-631d-0410-9a00-9330a90920b3'   
svnsync: Couldn't get lock on destination repos after 10 attempts  

Gibt es eine Möglichkeit, dieses Problem zu beheben?


52
2017-11-02 12:27


Ursprung


Antworten:


Tatsächlich gibt es in svnsync einige Funktionen, die die Sperre "stehlen" können.

svnsync help sync

zeigt an:

--steal-lock             : Steal locks as necessary.  Use, with caution,
                           if your mirror repository contains stale locks
                           and is not being concurrently accessed by another
                           svnsync instance.

und wenn ich es laufe, bekomme ich ein nettes:

Stole lock previously held by '[hostname]'

Also brauchst du das Propdel-Ding doch nicht


56
2018-04-17 07:02



Sie müssen die Sperreigenschaft im Remote-Repository über die svn-Befehlszeile auf der Remote-Site entfernen, die von einem Fehler während der Synchronisation übriggeblieben ist.

svn propdel --revprop -r0 svn:sync-lock file:///path/to/the/repository

53
2017-11-02 12:37



Technisch gesehen ist es das Ziel-Repository, aus dem Sie die Eigenschaft löschen müssen, nicht unbedingt das Remote-Repository, da das Ziel lokal sein könnte. Also für diese spezielle Frage:

svn propdel --revprop -r0 svn:sync-lock ${REPO}

9
2017-12-23 06:48



Das Entfernen des Schlosses funktionierte für mich. Allerdings musste ich einen etwas anderen Befehl verwenden, da ich den Benutzernamen und das Passwort des Kontos senden musste, um das Konto zu entsperren.

svn pdel --revprop -r 0 --username ??? --password ??? svn:sync-lock file:///path/to/the/repository

Ich musste diesen Befehl auch von dem Laufwerk ausführen, auf dem sich das Repository befand. (Wechsel zu d: in der Eingabeaufforderung vor dem Ausführen des Befehls, wenn mein Repository auf d war :)

Vor der Eingabe des Benutzernamens und des Passworts habe ich den folgenden Fehler erhalten:

revprop change blocked by pre-revprop-change hook (exit code 255)

Ich habe das gefunden und geöffnet pre-revprop-change Hook-Datei, und es hatte Code dort nur einen bestimmten Benutzernamen, der die erforderlichen Änderungen vornehmen könnte. Mit diesem Benutzernamen und Passwort im obigen Befehl wurde der Haken entfernt.


3
2018-06-09 21:19



Um das Vorhandensein einer Sperre zu bestätigen (obwohl der Fehler dies offensichtlich anzeigt), führen Sie proplist mit -verbose

svn pl --revprop -v -r 0 file:///svn/slave

dann lösche die Requisite wie nötig!


3
2017-10-14 05:44



Sie müssen zwei Dinge tun, um das Problem zu lösen. Einer ist das Schloss wie oben erwähnt gelöscht. Dann müssen Sie die Datei pre-revprop-change.tmpl leer machen und sie ausführbar machen. Verwenden Sie chmod + x unter Linux / Unix / Mac, ändern Sie den Dateinamen jedoch in pre-revprop-change.bat unter Windows. Danach können Sie Speicherauszugsdateien in Ihr Repository laden und sie dort spiegeln, wo Sie sie benötigen.


2
2017-11-03 16:14