2008-09-25 8 views
7

Hintergrund: In meinem Job verwenden wir SVN, C# und VisualStudio. Teil meiner Aufgabe sind regelmäßig globale Umbenennungen. Oft bekomme ich nach dem Umbenennen etwas Neues und verbinde dann Änderungen.Semantisches Merge-Tool

Die Frage: gibt es eine Lösung da draußen, die meine Änderungen sehen kann, die globale Umbenennung bemerken und dann auf die Bearbeitung anwenden, die andere gemacht haben, während sie sie zusammengeführt haben?

Eine andere Möglichkeit, um den gleichen Effekt zu erzielen, wäre eine Art Refaktorprotokoll, das dann auf die eingehenden Bearbeitungen angewendet wird.

Das Werkzeug muss nicht perfekt sein, auch wenn es nur Hinweise in ihren Bearbeitungen bemerkt, die sich auf etwas beziehen, das ich bearbeitet habe, wäre wertvoll.

Edit Mir sind die Refactor-Tools von VS bekannt. Was ich suche, ist etwas, das mir erlauben wird, nachdem ich meine Arbeitskopie umgestaltet habe, dieselben Refactorings auf andere Bearbeitungen anzuwenden, die ich jetzt zusammenführen muss.

Die ideale Lösung wäre sicher zu stellen Es gibt keine ausstehenden Änderungen beim Refactoring, aber das würde verhindern, dass irgendjemand anderes für die nächste Woche oder mehr etwas erledigt. (Weil sie jede halbe Stunde oder so für die nächste Woche synchronisieren müssten)

+1

Zurzeit scheint eine nette (kommerzielle) Option [Code Compare] (http://www.devart.com/codecompare/) zu sein, die im Visual Studio Extension Manager verfügbar ist. – rsenna

+1

Haben Sie das überprüft? http://plasticscm.com/sm/index.html Sie sollten, es ist genau das C# -Tool, das Sie gesucht haben – pablo

+0

Also was Sie eigentlich wollen, ist ein semantisches Patch-Tool. – mbx

Antwort

0

Angenommen, mindestens VS 2005 und die globale Umbenennung ist eine Variable/Eigenschaft/Funktion, gibt es einen Refactor - Rename Rechtsklick-Menüoption Sie könnte benutzen. Von Grund auf propagiert es die Namensänderung in Ihrer gesamten Lösung.

+0

Das ist, was ich im ersten Bit verwende. Es tut später nicht viel Gutes, da es keinen ungültigen Reaktorcode gibt (und das ist, was ich nach einer Zusammenführung bekomme) – BCS

0

Wäre es nicht möglich, die Zeit zu reduzieren, die Sie benötigen, um Ihre Änderungen zu bestätigen? Eine oder mehrere Wochen scheinen zwischen den Commits ziemlich lang zu sein ...

0

Ich habe dein Problem verstanden. Unglücklicherweise denke ich, dass es kein SVN-Skript gibt, das intelligent genug ist, um diesen Job während der Synchronisierung auszuführen.

Vielleicht könnte Ihr Team, das besser mit SVN arbeitet, diese Situation unangenehm machen. Wenn Sie in Ihrer Arbeitskopie ein svn: update durchführen und Zusammenführungsoperationen durchführen, empfiehlt es sich, die aktualisierte Lösung neu zu erstellen, bevor Sie die Änderungen festschreiben.

Ein svn-Skript mit der Fähigkeit, es automatisch beim Zusammenführen zu tun wäre in der Tat groß.

1

Die Umbenennung getrennt von anderen Refactorings beibehalten. Sie können im Allgemeinen automatisiert werden und machen daher die Änderungen einfach. Sie können sogar Skripte verteilen, um es anderen Technikern zu ermöglichen, die Transformation für ihre Dateien durchzuführen.

Es gibt keine einfache Möglichkeit, Refactorings zu automatisieren, also halten Sie es einfach. Ein Umbenennen sollte nur Minuten dauern und Sie sollten in der Lage sein, mit minimalen Tests auszuchecken und zu committen.

+0

Re that lat: Im Allgemeinen stimme ich zu, jedoch ein Werkzeug, das einige spezielle Klassen von Refactorings erkennen kann (das automatisierbar) und sie auf anderen Code anwenden, sollte praktisch sein. – BCS

Verwandte Themen