Was verursacht den SVN-Fehler „Revision xxx stimmt nicht mit vorhandener Revision yyy überein …“

Ich verwende eine neuere Version von SVN, um einige Dateien auszuchecken (mit 'svn co URL DEST'). Wenn ich dies tue, erhalte ich eine Fehlermeldung, die besagt "svn: E155000: Revision 11134260 stimmt nicht mit vorhandener Revision 11075284 in DEST überein". Wenn ich jedoch eine 2011-Version von SVN verwende, erhalte ich diesen Fehler nicht (d. H. Das Auschecken funktioniert einwandfrei). Kann mir jemand erklären, was diese Fehlermeldung bedeutet, damit ich besser herausfinden kann, wie ich das Problem beheben kann?

Ich habe versucht, hier auf Stackoverflow sowie eine Google-Suche und die SVN-Dokumentation zu suchen, und habe nur Informationen zum Zusammenführen gefunden, aber nichts, was dieses Problem an einer Kasse bespricht. Da ich das Problem nicht ganz verstehe, suche ich natürlich nicht nach den richtigen Dingen.

Die funktionierende SVN-Version ist: svn, Version 1.6.17 (r1128011) erstellt am 2. Juni 2011, 23:35:08

Und die fehlgeschlagene SVN-Version ist: svn, Version 1.11.1 (r1850623) zusammengestellt am 9. Januar 2019, 19:28:50 auf x86-Microsoft-Windows


1 238
1

Antwort:

Gelöst

Dieser Fehler ist auf die Unterschiede zwischen den SVN-Versionen 1.6 und früher und 1.7 und höher zurückzuführen. In 1.6 und früher hatte jedes Unterverzeichnis, das Teil des SVN-Repositorys war, seinen eigenen .svn-Ordner. Beginnend mit 1.7 gibt es einen einzigen .svn-Ordner, der sich im Stammverzeichnis der Arbeitskopie befindet. In unserem System ist ein Teil der Verzeichnisstruktur, die in unserem Haupt-Repository enthalten ist

root_dir/sub_dir_a

Wenn ich also root_dir auschecke, erhalte ich sub_dir_a als Unterverzeichnis. Durch die Entwicklung unseres Build-Systems und Repositorys wurde sub_dir_a für andere Projekte neben root_dir nützlich und wurde (fälschlicherweise) in ein separates Repository kopiert (nennen wir es copy_of_sub_dir_a), und das Build-System änderte sich zu a) check out root_dir, b) entfernen Sie sub_dir_a und dann c) checken Sie copy_of_sub_dir_a in root_dir/sub_dir_a aus. In SVN 1.6 und früher würde dies gut funktionieren, da root_dir nur die Informationen für root_dir enthielt. Ab 1.7 hat root_dir einen .svn-Ordner, der auch Informationen für sub_dir_a enthält. Wenn unser Build-System also versuchte, copy_of_sub_dir_a auszuchecken, wirft SVN einen Fehler aus, der darauf hinweist, dass die Revision (von copy_of_sub_dir_a) nicht mit dem übereinstimmt, was root_dir sagt. Die richtige Lösung für dieses Problem besteht darin, sub_dir_a NICHT als Teil des root_dir-Repositorys zu haben - es hätte gelöscht/verschoben statt kopiert werden sollen.