Dies geschieht sehr wahrscheinlich, weil für diese Dateien und Verzeichnisse die Eigenschaft svn: mergeinfo aus einer vorherigen Zusammenführung festgelegt wurde. Ich denke nicht, dass es im Allgemeinen eine gute Idee ist, einzelne Dateien oder Verzeichnisse so zusammenzuführen, dass die Zusammenführungsinfo in einzelne Dateien geschrieben wird. Sie sollten sich angewöhnen, auf der für Ihren Workflow höchstmöglichen Ebene zusammenzuführen, damit die Eigenschaft mergeinfo nur für strukturelle Verzeichnisse wie / trunk oder /branches/1.0 festgelegt wird.
Wenn Sie jedoch Mergeinfo-Eigenschaften für einzelne Dateien und Ordner haben, können Sie zwei Dinge tun: Als Erstes entfernen Sie einfach die Eigenschaft svn: mergeinfo aus den betreffenden Dateien und Verzeichnissen. Ich bin mir nicht sicher, ob dies empfohlen wird, es sei denn, Sie wissen wirklich, was Sie tun und welche Auswirkungen dies haben könnte. Lesen Sie vorher die Dokumentation!
Das zweite, was Sie tun können, ist, die Eigenschaftsänderungen so festzuschreiben, wie SVN es wünscht. Wenn Sie der Software vertrauen, ist dies wahrscheinlich das Richtige.
Trotzdem habe ich mit meinen Teamkollegen zusammengearbeitet, um die richtigen Gewohnheiten zu entwickeln, damit wir diesen Ärger nicht mehr haben.
SVN 1.7 und höher
Dies sollte in SVN 1.7 behoben werden. Aus den Versionshinweisen :
SVN vor 1.7
Sobald eine Datei / ein Ordner eine explizite Zusammenführungsinfo enthält, wird bei jeder nachfolgenden Zusammenführung mit dem Zweig diese Zusammenführungsinfo aktualisiert, auch wenn die Datei / der Ordner keine Beziehung zueinander hat. Dies ist ärgerlich, da die Änderungsliste bei jeder Zusammenführung immer unübersichtlicher wird.
Um dies zu vermeiden, führen Sie nur den Ordner "root" des Zweigs zusammen, z. B. "/branches/maintenance2.x". Keine der Dateien oder Ordner unter "/branches/maintenance2.x" sollte dann mergeinfo erhalten. Befolgen Sie die Hinweise zum Zusammenführen im SVN-Buch .
Selbst wenn Sie nur im "Stamm" -Ordner des Zweigs zusammenführen,
svn:mergeinfo
können beim Kopieren immer noch leere Eigenschaften für einzelne Dateien und Ordner angezeigt werden, um anzuzeigen, dass sie nicht dieselben Zusammenführungen wie ihre Geschwister erhalten haben.Es ist wahrscheinlich sicher, die überflüssige Teilbaum-Mergeinfo zu löschen. Eine Möglichkeit, dies zu tun, besteht darin, die
svn:mergeinfo
Eigenschaft für jede Datei und jeden Ordner in Ihrem Projektstamm rekursiv zu löschen . (Aber behalten Sie die Mergeinfo im Stammordner selbst!)Alternativ können Sie ein Upgrade auf Subversion 1.6 durchführen . Ich habe überprüft, dass es dieses Problem behebt. Es scheint sogar überflüssige Mergeinfo zu löschen, die von früheren Versionen für Sie hinzugefügt wurden.
Den Kommentaren nach zu urteilen, gibt es in SVN 1.6 immer noch Fälle, in denen überflüssige Unterbaum-Mergeinfo angezeigt wird. Aber das konnte ich nicht reproduzieren.
quelle
Wenn Sie Ihre Zusammenführungen mit der Option --ignore-ancestry durchführen, werden die mergeinfo-Eigenschaften erst gar nicht erstellt.
quelle
Wenn Sie Vorfahren ignorieren aktivieren, wird in den Ordnern keine svn mergeinfo erstellt. Wenn Sie die SVN-Zusammenführungsinformationen bereits erhalten haben, setzen Sie sie einfach zurück und führen Sie die Zusammenführung erneut durch, indem Sie die ignorierte Abstammung überprüfen.
quelle
svn: mergeinfo ist die Eigenschaft, mit der Subversion den Zusammenführungsverlauf verfolgt . Ich würde es einfach tun lassen, was es zu tun hat ... Möglicherweise müssen Sie den Verlauf später zusammenführen und feststellen, dass es nicht funktioniert, weil Sie diese Eigenschaften nicht festgeschrieben haben.
quelle
Der in der Frage " Stapelüberlauf" angegebene Befehl " Unnötige svn: mergeinfo-Eigenschaften entfernen" entfernt alle zusätzlichen mergeinfo.
quelle
Ich würde hinzufügen, dass mindestens ein Teil dieses Fehlers in Subversion 1.5.5 behoben wurde. Aus der Datei 1.5.5 CHANGES :
Das heißt, es gab einen Fehler in SVN vor 1.5, bei dem Mergeinfo-Einträge erstellt wurden, die nicht verwendet wurden und überflüssig waren, und dies ist wahrscheinlich das, was der ursprüngliche Fragesteller traf, wenn sie viele
svn:mergeinfo
Eigenschaften hatten.quelle
Wir haben es in unserem Projekt rekursiv entfernt, da fast alle Dateien diese Informationen hatten, was das Zusammenführen sehr ärgerlich machte (wenn nur eine Datei geändert wurde, mussten alle Dateien zusammengeführt werden). Von nun an werden wir nur noch auf der Wurzel zusammengeführt, was diese Situation in Zukunft vermeiden sollte.
Es hat uns bisher keine Probleme gegeben. Die Protokollierung ist weiterhin für Dateien verfügbar und scheint identisch zu sein (dies geschieht jedoch auf eigenes Risiko!).
Oh, wir haben es auf unserem Koffer gemacht, kurz bevor wir einen neuen Zweig gemacht haben. Auf diese Weise können wir von einer sauberen Tafel ausgehen.
quelle
Wir hatten dieses Problem auch in meinem Team und es machte den gesamten Zusammenführungsprozess etwas verwirrend. Nachdem ich dies gelesen hatte, versuchte ich, die Eigenschaft svn: mergeinfo aus einer Reihe von Dateien zu löschen, und nach einigen weiteren Tests schien das Problem dadurch behoben zu sein.
quelle
Tolle Frage und Antwort! Wir haben dieses Problem in letzter Zeit, weil wir versuchen, die Einschränkungen unseres automatisierten Build-Systems zu umgehen. Unser Build-System erhöht automatisch die .bdsproj- und einige der .dpr / .dpk-Dateien mit Versions- und Pfadinformationen.
Ich möchte das ändern ... aber im Moment, wenn Sie einen Zweig mit einem anderen zusammenführen möchten, erhalten Sie die Handvoll Dateien, die Sie geändert haben, und dann 1000 Dateien, die der Build-Computer geändert hat. Wir haben also "gezielte" Zusammenführungen durchgeführt, manchmal eine Datei nach der anderen. Insbesondere bei .dpr- oder .bdsproj-Dateien, die legitime Änderungen aufweisen (z. B. die Aufnahme einer zusätzlichen Einheit). Jetzt weiß ich, was los ist, also kann ich hoffentlich dem Wahnsinn ein Ende setzen.
Danke Stapelüberlauf!
quelle