Manchmal kopiert ein Benutzer Dateien mit Windows Explorer und schreibt sie fest, wenn sie eine Kopie oder Zusammenführung auf SVN-Repository-Ebene hätten ausführen sollen. Daher hat SVN keine ordnungsgemäße Verfolgung dieser Änderungen. Sobald ich darüber informiert bin, ist der Schaden eindeutig bereits behoben und es hat möglicherweise viele spätere Änderungen an den fraglichen Dateien gegeben. Es ist wichtig, diesen Teil der Geschichte nicht zu verlieren. Gibt es etwas, was ich tun kann, um Dinge im Repository nachträglich zu verbessern, wenn ich herausfinde, dass diese Situationen eingetreten sind?
Genauer gesagt, habe ich zwei Szenarien, je nachdem, ob die Zieldatei bereits existiert oder nicht. Im ersten Szenario (1) führte der Benutzer einen Zusatz durch, der nicht als Kopie aufgezeichnet wurde. Im zweiten Szenario (2) führte der Benutzer eine Aktualisierung durch, die nicht als Zusammenführung aufgezeichnet wurde.
Außerdem wurden sowohl die Quell- als auch die Zieldatei nachfolgenden Aktualisierungen unterzogen, die ebenfalls festgeschrieben wurden. Manchmal wurden diese Nachbearbeitungen auch manuell und somit ohne die eigentliche Mergeinfo auf beiden Seiten durchgeführt.
MÖGLICHKEIT: Könnte manuell ein Mergeinfo-RevProp zur früheren Revisionshilfe hinzugefügt werden? Wenn ja, wie mache ich das? Bitte berücksichtigen Sie beide Szenarien.
Hier sind die Szenarien, die ich mir vorstellen kann und wie ich sie lösen kann (falls möglich):
1) Die Dateien wurden kopiert und Änderungen wurden vorgenommen (an ihre ursprüngliche URL)
1a) wenn die Verzweigung noch nicht über diese Dateien verfügt:
1b) wenn die Verzweigung diese Dateien bereits enthält:
2) Die Dateien wurden kopiert, Änderungen vorgenommen, aber nicht festgeschrieben (an ihre ursprüngliche URL, da die Kopie das nicht geändert hat)
Hinweis : Da die Änderungen noch nicht festgeschrieben wurden, gibt es keine zu speichernde Historie, auch nichts mit dem Stamm zu tun
2a) wenn die Verzweigung noch nicht über diese Dateien verfügt:
2b) wenn die Verzweigung diese Dateien bereits enthält:
(*) Verwenden Sie ein beliebiges reguläres Zusammenführungswerkzeug für den Job, z. WinMerge
Update : Nach Ihrer Bearbeitung verstehe ich Ihre Situation besser (das obige war mit der Annahme, dass nach der manuellen Kopie die URL des kopierten Ordners immer noch auf den Stamm zeigte)
Sie könnten versuchen, svn propset --revprop -r <revision> snv:mergeinfo <updated mergeinfo>
(falls nicht durch einen pre-revprop-change-Haken blockiert) in der Verzweigung zum "Reparieren" der Merge-Informationen zu verwenden, aber ich glaube, dass Sie auch alle nachfolgenden Versionen der Mergeinfo "reparieren" müssen da svn diese Informationen für einige seiner Operationen verwendet (z. B. Zusammenführungen); Auch wegen der letzteren müssen Sie sehr vorsichtig mit den aktualisierten Inhalten sein.
Eine bessere Option wäre meiner Meinung nach, das Protokoll bei der Revision des inkorrekten Commits in den Zweig zu aktualisieren, um die Revision des Trunks einzubeziehen, auf den sich die kopierten Dateien beziehen. Auf diese Weise sind die Informationen bei Bedarf verfügbar, aber es besteht kein Risiko, die zukünftigen Operationen von svn zu stören. Der große Nachteil dieses Ansatzes besteht darin, dass beim Zusammenführen der Verzweigung mit der Verbindungsleitung möglicherweise Konflikte auftreten, die gelöst werden müssen (da die Zusammenführungsinformationen nicht aktualisiert wurden). Der Befehl für diese Aktion lautet svn propset --revprop -r <revision> svn:log <updated log message>
Unter der Annahme, dass die kopierte Datei nicht am neuen Speicherort hinzugefügt wurde, sollte ich zuerst Folgendes tun:
$ svn move -m "Move a file" http://svn.red-bean.com/repos/foo.c http://svn.red-bean.com/repos/blah/foo.c
svn up
, um den WC in Zeile Meine Lösung ist nicht technologisch. Ich denke eher, du musst deinen Leuten beibringen, dass sie etwas falsch machen und ihnen zeigen, wie man es richtig macht. Nichts, worüber man sauer werden könnte. Manchmal machen Leute (mich eingeschlossen) etwas Dummes, weil sie nicht erkannt haben, dass es einen besseren Weg gibt, oder weil sie den besseren Weg noch nicht verstanden haben.
Wenn das wirklich wiederkehrend ist, notieren Sie die Fehler und Erfolge. Tally die Ergebnisse auf einem Brett und machen es Spiel. Nimm keine Leute auf. Nach einiger Zeit wird das Problem abnehmen.