2009-12-31 10 views
9

Wir versuchen, die Eigenschaft 'svn: mergeinfo' nur im Stammzweigordner zu behalten. Wir sehen jedoch, wie es in Unterordner kriecht. Wir konnten einige mögliche Ursachen identifizieren:Wie vermeidet man svn: mergeinfos auf Unterordner?

  1. Verschieben eines Ordners im Repo-Browser
  2. Verschieben und/oder Umbenennung von Paketen in IntelliJ
  3. Mit alten SVN-Clients

Can jemand eine Liste von Dingen, die wir nicht tun sollten, um zu vermeiden, diese Eigenschaften durch Zufall zu schaffen?

Die Werkzeuge, die wir verwenden, sind IntelliJ 8 (bald 9), Ankh, TortoiseSVN und SlikSvn.

Antwort

1

Wir haben einen SVN-Hook/Trigger geschrieben, der Commits an svn: properties auf Nicht-Trunk einfach zurückweist. Wir haben nie zurückgeschaut.

+0

Können Sie das Hook-Skript teilen? –

+0

@WinstonSmith - Ich arbeite nicht mehr in der gleichen Firma, also habe ich keinen Zugriff auf den Haken. Wenn es dir wirklich wichtig ist, kann ich versuchen und fragen, aber es sollte sehr trivial sein, es zu implementieren (wenn nicht, frag einfach hier eine Frage, wie es geht). – ripper234

0

Ich kann eine solche Liste nicht zur Verfügung stellen. Ich würde Ihnen empfehlen, svn Hook zu verwenden, der Benutzeraktion protokollieren wird, die zu Ordnereigenschaftsänderung führt und entweder eine Warnung ausstellen oder dieses Commit ablehnen, , was auch immer entsprechend Ihrem Workflow geeignet ist.

11

Leider tun dies alte svn Clients einfach, und alle Tools, die auf diesen alten Versionen von svn basieren, sind ebenfalls kaputt. Die einzige Möglichkeit zum Beheben dieses Problems besteht darin, die erstellten svn: mergeinfo-Einträge vor dem Festschreiben zu löschen. Da die meisten Menschen nicht bewusst sind, dass sie erstellt werden, dann ist die einzige reale Möglichkeit, dass zur Durchsetzung ist ein pre-commit Haken, oder einfach nur tun einfach:

svn propdel --recursive svn:mergeinfo $ROOT/* 

sie ab und zu zu reinigen. Seien Sie vorsichtig, wenn Sie dies tun, da dies jede Aufzeichnung von Teilverschmelzungen zerstört, die Sie getan haben, also sollten Sie das wirklich nur tun, wenn Sie wirklich keine Teilverschmelzungen machen. Der Fragesteller tut es nicht und tut es auch nicht in unserer Umgebung.

Das Problem ist in den neueren SVN-Clients behoben, so dass das Problem langsam aussterben sollte, aber das könnte einige Zeit dauern, bevor alle Tools in Ihrem Workflow ersetzt werden.

Basierend auf einer anderen Antwort auf diese Frage, eine kurze Erklärung dessen, was das Problem verursacht. Wenn Sie eine Arbeitskopie verschieben oder löschen Svn-Clients älter als 1.5.5 erstellt einen falschen svn: mergeinfo-Eintrag. Dies ist resolved in svn 1.5.5.

+0

Zerstört das nicht bestehende Merge-Informationen, oder sind die Merge-Informationen dort redundant? –

+1

In unserem Fall war die Mergeinfo überflüssig. Aber Sie haben recht, es wird eine partielle Verschmelzungsinfo zerstören, die Sie gemacht haben. –

+0

aktualisierte Antwort auf dieses Problem zu erwähnen, und das Problem zu beschreiben, und wann es gelöst wurde. –

0

Führen Zusammenführungen auf Unterordner oder einzelne Dateien verursacht dies, und es sollte verursachen, weil es Merge-Informationen aufzeichnen muss.

Am besten führen Sie Ihre Zusammenführungen auf der Hauptebene durch, und wenn Sie diese selektiv anwenden möchten, kehren Sie die Änderungen, die nicht zusammengeführt werden sollen, zurück und schreiben Sie sie dann fest.

+0

Ich bekomme diese Eigenschaft auch ohne Zusammenführungen von Unterordnern. – ripper234

+0

Zu wem downvoted, bitte geben Sie einen Grund dafür? Das Zusammenführen auf Unterebenen ist nicht erforderlich, wenn Sie Ihre Zusammenführungsinformationen nur auf der Hauptebene haben möchten. –

+1

Ich habe Sie nicht abgelehnt, obwohl das, was Sie sagen, korrekt ist, besteht das Problem darin, dass Kopien auch diese Einträge erzeugten. Dies wurde in 1.5.5 behoben (* erstellen Sie keine Mergeinfo für WC-WC-Moves oder Kopien (r34184, -585)) –

Verwandte Themen