2017-08-10 1 views
2

Obwohl es einige ähnliche Fragen hier (zB SVN - Reintegration Merge error: "must be ancestrally related") und im Web gibt, konnte ich nicht herausfinden, warum svn mergeinfo <file> einen Fehler in allen meinen SVN-Repositories verursacht . Im Gegensatz zu allen anderen Q & Wie ich festgestellt habe, kann ich svn merge erfolgreich ausführen. Zum Beispiel zum Verhängnis eines vorherige zu einer pom.xml Datei begehen:svn mergeinfo - E195016: "muss ancestral verwandt sein"

svn merge -r 17409:17408 pom.xml 
--- Reverse-merging r17409 into 'pom.xml': 
U pom.xml 
--- Recording mergeinfo for reverse merge of r17409 into 'pom.xml': 
U pom.xml 
--- Eliding mergeinfo from 'pom.xml': 
U pom.xml 

Allerdings, wenn ich svn mergeinfo ausführen, ich die folgenden Fehlermeldung erhalten:

svn: E195016: 'https://../trunk/MyProject/[email protected]' must be ancestrally related to 
'https://../trunk/[email protected]' 

In diesem Beispiel ist 50446 die derzeitige Leiter Revisionsnummer und ich bekomme den gleichen Fehler für jede Datei, die ich ausprobiert habe. Erst wenn ich den mergeinfo Befehl auf dem obersten Verzeichnis ausführen selbst, es funktioniert:

svn mergeinfo . 
    youngest common ancestor 
    |   last full merge 
    |   |  tip of branch 
    |   |  |   repository path 
    50446    50446 
    |     |  
    -------| |------------   ../trunk/MyProject 
    \       
     \       
     --| |------------   ../trunk/MyProject 
         |  
         50446 

Und noch seltsamer, ich habe keine mergeinfo Eigenschaften festgelegt finden. Befehle wie svn propget svn:mergeinfo --recursive oder svn propget svn:mergeinfo --depth=infinity geben nichts aus und werden erfolgreich mit dem Statuscode 0 zurückgeliefert.

Hat jemand eine Idee, wie ich unsere Dateien wieder mit den Projekten, in denen sie sich befinden, verbinden kann?

Antwort

1

Kurze Antwort: svn mergeinfo <file> ist falsch.

Von der SVN-Dokumentation (svn help mergeinfo):

"Summarize the history of merging between SOURCE and TARGET."

"SOURCE and TARGET are the source and target branch URLs, respectively."

"The default TARGET is the current working directory ('.')."

Also, wenn Ihr Befehl so etwas wie svn mergeinfo pom.xml ist, dann wird die Fehlermeldung wie erwartet, da es zwischen dieser Datei keine „ancestrally Beziehung“ ist und Es ist ein Verzeichnis.
Der richtige Befehl wäre: svn mergeinfo pom.xml pom.xml, die diese beiden Dateien vergleichen wird, und wahrscheinlich ist, was Sie wollen.

Wenn Sie svn mergeinfo . ausführen, ist es das gleiche wie unter svn mergeinfo . .. So funktioniert es und Sie erhalten die Mergeinfo-Ausgabe.

Sie können auch svn mergeinfo pom.xml [email protected] ausführen, um eine bestimmte Revision zu vergleichen.


Sie können diesen Fehler auch erhalten, wenn Sie versuchen, Dinge zusammenzufassen, die nicht verwandt sind.
Wenn Sie den Verzeichnisbaum oder die Dateien manuell erstellt haben (ich meine: ohne die Verzweigungsfunktion zu verwenden), sind sie nicht verwandt und Sie erhalten diesen Fehler.

Bitte lesen Sie this question und beachten Sie, dass der Autor den Zweig dev manuell erstellt, SVN zu brechen.

Die beste Lösung in diesem Fall wäre es, die Verzweigung normal zu erstellen, alle Dateien manuell in diese Verzweigung zu migrieren (alles kopieren und einfügen) und sie dann wieder mit der Leitung zu verbinden.

+0

Zurück in der Geschichte sehe ich ein Commit (mit 'svn log --verbose --stop-on-copy'), wo jemand ein Verzeichnis verschoben hat, indem er' D/base/trunk/lib/plugining' gelöscht und hinzugefügt hat es in einen anderen trunk 'A/tools/trunk/plugin (von/base/trunk/lib/plugin: 16026)'. Wäre das eine Erklärung dafür, warum ich diese Fehler erhalte? – dokaspar

+1

@dokaspar Ich las Ihre Frage erneut und bemerkte, dass ich Ihr Problem falsch verstanden habe. Meine Antwort wurde verbessert, um Ihr Problem korrekt zu beheben. Bitte, könnten Sie das überprüfen? – MiguelKVidal

+0

Also noch einmal alles auf RTFM :) – dokaspar

Verwandte Themen