Die Reintegration kann nur verwendet werden, wenn die Revisionen X bis Y zuvor aus <URL> zusammengeführt wurden, um die Quelle wieder zu integrieren. Dies ist jedoch nicht der Fall

127

Ich habe SVN-Zweige mit Tortoise 1.6 verwendet. Ich habe den Stamm regelmäßig mit dem Zweig zusammengeführt, um ihn auf dem neuesten Stand zu halten.

Heute dachte ich, ich würde den Zweig wieder integrieren. Ich habe "Reintegrate a branch" von Tortoise ausgewählt und die folgende Fehlermeldung erhalten:

Reintegrate kann nur verwendet werden, wenn die Revisionen 4709 bis 5019 zuvor von http://subversion/svn/saxdev/trunkder Reintegrate-Quelle zusammengeführt wurden. Dies ist jedoch nicht der Fall

Anschließend wurden rund 50 Dateien mit folgenden Beschreibungen aufgelistet:

Error: branches/qst/kobalt/sax/businessobjects/util/HistoryParent.java

Error: Missing ranges: /trunk/kobalt/sax/businessobjects/util/HistoryParent.java:4709-5018

Revision 5019 ist die Kopfrevision. Revision 4737 war die Revision, als ich einen Zweig erstellt habe.

Ich habe dies aus dem Protokoll für Revision 4737

Aktion: Pfad hinzugefügt: / branch / qst Kopie aus Pfad: / trunk

Für mich besagt diese Fehlermeldung, dass der Zweig nicht ursprünglich aus dem Trunk stammt, was nicht stimmt.

Irgendwelche Ideen?

colinjwebb
quelle
1
In Ordnung. Ich benutze Subversion nicht mehr wirklich, werde aber dein Wort dafür nehmen!
Colinjwebb
1
Danke Alter. Ich denke, die Seite ist besser dafür.
Grau

Antworten:

138

Wenn Sie an einem Zweig arbeiten und ihn mit anderen Arbeiten auf dem neuesten Stand gehalten haben, kann es sein, dass Sie verwirrt sind, wenn Sie eine Arbeitskopie des Trunks erstellen und versuchen, Ihren Zweig wieder zu integrieren, wenn Sie eine Nachricht wie die folgende erhalten:

$ svn merge --reintegrate https://server.blah/source/orb/branches/bronze_services
svn: Reintegrate can only be used if revisions 650 through 694 were previously merged from
     https://server.blah/source/orb/trunk to the reintegrate source, but this is not the
     case:
  branches/bronze_services/occl
    Missing ranges: /trunk/occl:650-693

Ich habe eine Reihe von Problemumgehungen bei Google gesehen, aber sie haben mich als "Hacks" nervös gemacht. Um dies zu beheben, habe ich mich entschlossen, genau das zu tun, was Subversion in der Nachricht andeutet. Ich bin zu meiner Niederlassung zurückgekehrt und habe die angegebenen Revisionen explizit zusammengeführt:

$ svn merge -r 650:693 https://server.blah/source/orb/trunk
$ svn commit -m 'merged revisions 650:693 from trunk'
    Sending        occl
Committed revision 695.

Sobald ich dies getan hatte, konnte ich zur Arbeitskopie von trunk zurückkehren und den Zweig ohne Probleme wieder integrieren.

ich hoffe das hilft

Paul Whipp
quelle
16
Nett! "Mach genau das, was Subversion in der Nachricht andeutet". :)
Adam
7
Ich stimme zu, die populärere Antwort ist verlockend, aber wahrscheinlich besser, sie richtig zu beheben. Ich musste zu der spezifischen problematischen Datei gehen und svn mergesie aus dem Kofferraum.
Steve Kehlet
1
Das hat bei mir super funktioniert. Der Haupttrick war, dass Tortoise mir die Problemrevision nicht erzählte. Nach dem Upgrade meines Befehlszeilen-SVN-Clients konnte ich ihn dazu bringen, mir eine Nachricht wie Sie zu senden, und dann die Problemrevision zusammenführen und zum Trunk zurückkehren.
user12861
7
Dies hat bei mir nicht funktioniert, da die aufgelisteten "fehlenden" Zusammenführungen bereits in der Verzweigung durchgeführt wurden (Quelle neu integrieren).
Sam
6
Diese Antwort klingt zwar vernünftig, hat aber bei mir nicht funktioniert. Ich bekam immer die gleichen Fehlermeldungen. Was half, war, die Eigenschaften von svn: mergeinfo aus den aufgelisteten Dateien zu entfernen, genau wie es die akzeptierte Antwort vorschlägt.
Jenny O'Reilly
85

[[Obwohl meine Lösung in der Vergangenheit für mich funktioniert hat, kann sie bei modernen SVN-Clients zu falschen Ergebnissen führen. In unserem Fall schienen die Zusammenführungsfehler Nebenprodukte von Automatisierungen zu sein, die unsere SVN-Historie verwirrten und keine wirkliche Aktivität darstellten. Ich lasse dies hier für die Nachwelt, aber bitte berücksichtigen Sie stattdessen die akzeptierte Antwort. ]]

Die Lösung für mich bestand darin, alle svn:mergeinfoEigenschaften zu entfernen , die irgendwie an einzelne Dateien in der Hierarchie angehängt werden.

svn merge --reintegrate svn+ssh://svn/usr/local/svn/repos/all/trunk 
svn: Reintegrate can only be used if revisions 18765 through 18921 were
    previously merged from svn+ssh://svn/usr/local/svn/repos/all/trunk to the
    reintegrate source, but this is not the case:
trunk/proj/src/main/java/com/foo/furniture.java
Missing ranges: /trunk/proj/src/main/java/com/foo/furniture.java:18765-18920

So finden Sie die Dateien mit Mergeinfo-Informationen:

cd ~/svn/branches/2.7
svn propget -R svn:mergeinfo .

Dann können Sie die mergeinfo-Eigenschaften entfernen:

svn propdel svn:mergeinfo proj/src/main/java/com/foo/furniture.java ...
svn commit -m 'removed mergeinfo' proj/src/main/java/com/foo/furniture.java ...

Nachdem ich dies abgeschlossen habe, wurde meine Zusammenführung einwandfrei ausgeführt.

Grau
quelle
2
Dies hat mir wirklich geholfen, mein Problem zu lösen, aber mein Problem war darauf zurückzuführen, dass eine Revision aus einem untergeordneten Ordner zusammengeführt wurde, anstatt dies im Stammordner zu tun. Mein Problem war - ich hatte die Zusammenführung durchgeführt, aber der Stammordner hatte nicht erkannt, dass die Zusammenführung stattgefunden hatte. Dies bedeutete, dass ich die mergeinfo-Requisite manuell mit den fehlenden Versionsnummern aktualisieren musste. HINWEIS Ich konnte dies nur tun, weil für die Revision keine anderen Dateiänderungen vorgenommen wurden und ein unerwartetes Verhalten verursacht wird, wenn andere Dateien zusammengeführt werden müssen. In diesem Fall müssen Sie die Revisionen erneut zusammenführen.
ExecutionOrder
5
In TortoiseSVN können Sie mit der rechten Maustaste auf die Datei klicken, "TortoiseSVN" -> "Eigenschaften" auswählen und die Eigenschaft svn: mergeinfo löschen.
StarCub
3
@StephenKennedy Möglicherweise tritt das Problem auf, einen bereits wieder integrierten Zweig wiederzuverwenden. Wenn ja, lesen Sie den letzten Abschnitt von svnbook.red-bean.com/de/1.7/…, beginnend mit "Sobald eine - Reintegrate-Zusammenführung von Zweig zu Stamm durchgeführt wurde, kann der Zweig nicht mehr für weitere Arbeiten verwendet werden."
AlexMA
6
+1. Sie müssen nicht alle Mergeinfos löschen. nur diejenigen, die fehlende Bereiche haben. In meiner Antwort finden Sie eine Möglichkeit, nur die Problem-Mergeinfos zu löschen, indem Sie die TortoiseSVN-Fehlerausgabe filtern.
Iain Samuel McLean Elder
4
-1. Sie sollten mergeinfo-Eigenschaften nur entfernen, wenn Sie sich wirklich sicher sind, was Sie tun. Viele Leute lesen dies möglicherweise, löschen diese Eigenschaften und führen versehentlich andere Probleme ein. Paul Whipp hat eine bessere Antwort.
Bizmarck
15

Wenn Sie versuchen, Ihren Zweig wieder in den Trunk zu integrieren, und Sie solche Fehler von TortoiseSVN sehen:

Der Reintegrationstest zum Zusammenführen ist nur fehlgeschlagen!: "Die Reintegration kann nur verwendet werden, wenn einige Revisionen zuvor aus dem Trunk zusammengeführt wurden. Dies ist jedoch nicht der Fall."

Klicken Sie auf den Fehlertext und drücken Sie CTRL+ A, CTRL+, Cum den gesamten Text zu kopieren.

Fügen Sie den Text in die Here-Zeichenfolge dieses PowerShell-Skripts ein:

@"
Command: Reintegrate merge http://svn.cloudcorp.com/branches/myproject into C:\Users\iain\Documents\Repositories\CloudCorp\trunk  
Error: Reintegrate can only be used if revisions 18089 through 18612 were previously  
Error:  merged from http://svn.corp.skyscanner.local/svn/SkyScannerDatabase/trunk to  
Error:  the reintegrate source, but this is not the case:  
Error:    
Error:  branches/myproject/userdata/usermanagementservice  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/usermanagementservice:18365,18404  
Error:    
Error:  branches/myproject/userdata/auto_create_db.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/auto_create_db.sql:18406  
Error:   
Error:    
Error:  branches/myproject/userdata/create_audit_tables_triggers_uds.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/create_audit_tables_triggers_uds.sql:18406  
"@ -split "`n" |
? { $_ -match ('Error: +branches') } |
% { $_.Substring($_.IndexOf('userdata')) } |
% { "svn propdel svn:mergeinfo $_" }

Das Skript extrahiert die relativen Pfade von Dateien mit dem Problem mergeinfo und gibt eine Liste von Befehlen aus, um jeden einzelnen zu beheben.

Möglicherweise müssen Sie den 'userdata'Wert an Ihre Repository-Struktur anpassen.

Führen Sie das Skript aus, um die Befehle auszugeben, die Sie zum Entfernen der Problem-Mergeinfos benötigen.

In diesem Beispiel würde das Skript diese Ausgabe erzeugen:

svn propdel svn:mergeinfo userdata/usermanagementservice  
svn propdel svn:mergeinfo userdata/auto_create_db.sql  
svn propdel svn:mergeinfo userdata/create_audit_tables_triggers_uds.sql  

An der Eingabeaufforderung können Sie zur Verzweigungsbasis (myproject) navigieren und die Befehle ausführen, um die Problem-Mergeinfos zu löschen.

Sie sollten die Ausgabe wie folgt sehen:

property 'svn:mergeinfo' deleted from 'userdata\usermanagementservice'.
property 'svn:mergeinfo' deleted from 'userdata\auto_create_db.sql'.
property 'svn:mergeinfo' deleted from 'userdata\create_audit_tables_triggers_uds.sql'.

Wie in Gray's Antwort sollten Sie jetzt die Änderungen in den Zweig übernehmen und versuchen, ihn erneut zu integrieren. Diesmal sollte es funktionieren!

Iain Samuel McLean Elder
quelle
1
Lange vor der Wiedereingliederung habe ich einige Änderungen an Trunk aus meinem Zweig zusammengeführt (nicht wieder integriert), da ich mich versehentlich für meinen Zweig entschieden habe, als ich mich für Trunk festlegen wollte. Könnte es der Grund für diese Reintegrationsfehler sein?
Iain Samuel McLean Elder
Genau das scheint dieses Problem in meinem Fall verursacht zu haben. Vielen Dank, dass Sie sich die Zeit genommen haben, das Skript zu schreiben!
Sam
@ Sam Schön, dass Sie es hilfreich fanden. Mussten Sie den wörtlichen Raum durch einen ersetzen \s+, damit er für Sie funktioniert?
Iain Samuel McLean Elder
Art von; es war mehr das +, was nötig war, damit es für mich funktioniert. In meinem Fall hatten einige Zeilen zwei Leerzeichen und andere drei, sodass die Unterstützung für eine variable Anzahl von Leerzeichen erforderlich war. Ich bin mir nicht sicher, warum ich den Raum in a geändert habe \s. das wurde wahrscheinlich nicht benötigt, also entschuldige diesen Teil!
Sam
@Sam Keine Sorge, aber ich werde es vorerst wieder in einen wörtlichen Bereich ändern, bis TortoiseSVN anfängt, es mit Tabs oder was auch immer zu verwechseln :-) Ich habe das verlassen, +da es für dich nützlich war.
Iain Samuel McLean Elder
11

Eigentlich habe ich es mit der Option "Zwei verschiedene Zweige zusammenführen" behoben, um den Stamm und den Zweig in meiner Arbeitskopie zusammenzuführen. Dann habe ich das dem Kofferraum übergeben.

Wunderbar

colinjwebb
quelle
4
Diese Antwort erklärt nicht wirklich, was Sie getan haben. Keine Beispiele, nicht einmal ein Link zum erforderlichen Abschnitt des Handbuchs.
Zigg
Im Nachhinein nicht. Da dies jedoch meine eigene Antwort am selben Tag wie die Frage war, war es die beste Antwort für einige Monate. Ich würde gerne annehmen, dass es sinnvoll ist, wenn Sie Tortoise SVN 1.6 weiterhin verwenden. Ich habe jetzt stattdessen Grays Antwort als akzeptierte Antwort akzeptiert.
Colinjwebb
Beispiel: svn merge ^ / tags / wx ^ / tags / yz. Der Reintegrationsfehler trat bei mir auf, wenn ich 1.8 verwendete und in den Trunk zusammenführte, in den die Zusammenführungsquelle zuvor eine bestimmte Revision aus dem Trunk zusammengeführt hatte. 1.8 schien zu entscheiden, dass eine Wiedereingliederung versucht wurde, was jedoch nicht der Fall war. Eine Trockenlaufzusammenführung mit 1.6 würde gut funktionieren, aber die Zusammenführung der beiden URLs passt auch.
Nick
1
Das genaue Szenario, das mit 1.8 fehlgeschlagen ist, bestand darin, ein Tag aus einigen Revisionen für eine Patch-Version zurück zu kopieren, eine Änderung vom Trunk zum Backport durch Zusammenführen in das gepatchte Tag auszuwählen, eine weitere Änderung am gepatchten Tag vorzunehmen und dieses zurückzuführen in den Kofferraum. Die Änderungen zwischen dem Basis-Tag und der gepatchten Version müssen wieder mit dem Trunk zusammengeführt werden, und eine Zusammenführung mit zwei URLs ist ein Vergnügen.
Nick
Ich hätte diese Antwort lesen sollen, bevor ich 3 Tage lang versucht habe zu verstehen, was los war. Ich verstehe immer noch nicht, warum ich dieses Problem hatte, aber ich vermute, der Kommentar von @Nick ist der Grund - und jetzt funktionieren die Dinge, ich werde nicht weiter suchen ...
Dave Richardson
6

Etwas, das bei Schildkröten-SVN für mich funktioniert hat: Anstatt alle Revisionen aus dem Zweig zusammenzuführen, wählen Sie einen bestimmten Bereich und wählen Sie manuell alle Ihre Revisionen aus dem Zweig aus.

Olga Perederieieva
quelle
1
Vielen Dank für eine so grundlegende Idee. Von allen Antworten war dies nicht nur die am wenigsten komplizierte, sondern auch die einzige, die für mich funktioniert hat.
Redman
3

Tun Sie einfach, was SVN Ihnen sagt.

  1. Führen Sie den Zweig aus der Umkehrung zusammen, die SVN Ihnen mitteilt
  2. Reintegrieren Sie sich vom Ast zum Stamm
Farshid Eilami
quelle
2
Hat bei mir nicht funktioniert. Die Änderungen waren bereits in der Branche vorhanden. Ihre Anweisungen sehen so aus, als ob sie in einigen Fällen funktionieren sollten, aber sie scheinen auf einer Annahme zu beruhen, sodass sie nicht universell erscheinen.
Sam
1

Siehe auch meine Antwort hier für meine Erfahrung mit einem ähnlichen Fall. Ich bin nicht sicher, ob dies die Ursache Ihres Problems ist, aber es sieht so aus, als ob Subversion 1.8 Probleme mit der Mergeinfo hat, wenn sich zwei Änderungen gegenseitig aufheben.

Dewtell
quelle
0

Ich bin auf dieses Problem gestoßen. Ich habe in meinem Zweig ein SVN-Protokoll erstellt, um festzustellen, wo ich Trunk mit meinem Zweig zusammengeführt habe.

Ich habe alle Überarbeitungen notiert.

Ich habe dann die Verzweigung meines Zweigs zum Trunk durchgeführt, indem ich die Revisionen manuell angegeben habe. Ich habe alle Bereiche angegeben, um die Revisionen auszuschließen, in denen ich Trunk zusammengeführt habe. Ich schaffe es, meine Filiale zusammenzuführen.

Ich musste bei mergeinfo einige Änderungen vornehmen, aber mein Code wurde zusammengeführt.

Ich habe meinen Zweig sofort gelöscht.

David
quelle
0

Ich habe diesen Fehler erhalten, nachdem ich eine Zweigstelle teilweise ausgecheckt habe. Ich habe den Zweig mit dem Stamm auf dem neuesten Stand gehalten, aber die Stammrevisionen für Teile des Zweigs, die nicht ausgecheckt wurden, wurden natürlich nicht aktualisiert. Die Lösung bestand darin, den Zweig vollständig auszuchecken und dann alle Trunk-Änderungen zusammenzuführen. Nachdem ich diese für den Zweig festgeschrieben hatte, konnte ich den Zweig erfolgreich mit dem Trunk zusammenführen.

John W.
quelle
0

Habe dieses Problem am

  • TortoiseSVN 1.9.7, Build 27907 - 64 Bit, 08.08.2017 19:34:38
  • Subversion 1.9.7, -freigabe
  • apr 1.5.2
  • apr-util 1.5.4
  • Leibeigener 1.3.9
  • OpenSSL 1.0.2l 25. Mai 2017
  • zlib 1.2.8
  • SQLite 3.14.1

Klicken Sie mit der rechten Maustaste auf den Zweig, in dem Sie zusammenführen möchten (aber diese Meldung erhalten), und wählen Sie die Option "Auf Revision aktualisieren". Wählen Sie dann im folgenden Dialogfeld (Abbildung unten) diese Revisionen aus und klicken Sie auf "OK" - sobald alle vorherigen Revisionen zusammengeführt wurden. Sie würden diese Nachricht nicht erhalten

Geben Sie hier die Bildbeschreibung ein

Fügen Sie dies hier hinzu, um jemandem zu helfen, der Tortoise SVN verwendet

Akber Iqbal
quelle
-1

Ich weiß, dass dies ein alter Beitrag ist, aber ich hatte auch Probleme, dieses Problem zu lösen, bis ich herausfand, dass die in der Fehlermeldung aufgeführten Dateien ein SVN-Eigenschaftsproblem aufweisen.

Ich habe mit der rechten Maustaste auf die fehlerhaften Dateien geklickt: TortoiseSVN> Eigenschaften, und festgestellt, dass die Datei zwei svn: mergeinfo hatte und eine von ihnen nicht von Daten geerbt hatte. Also habe ich diese Mergeinfo entfernt.

Ich benutze TortoiseSVN 1.12.2, Build 28653 - 64 Bit.

awan.soekamto
quelle