Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Semantic merge tool [closed]

Background: In my job, we use SVN, C# and VisualStudio. Part of my task regularly involves global renames. Often I end up with a broken build after renaming something and then merging in changes.

The question: is there a solution out there that can look at my changes, notice the global rename and then apply that to the edit that others have made while merging them in?

Another way to get much the same effect would be some sort of refactor log and then apply that to the incoming edits.

The tool need not be perfect, even if it just noted any references in their edits that referred to something that I have edited would be valuable.

Edit I'm aware of VS's refactor tools. What I'm looking for is something that will allow me to, after I have refactored my working copy, apply the same refactorings to other peoples edits that I now need to merge in.

The ideal solution would be to make sure there are no outstanding edits when I do the refactoring, but that would prevent anyone else from getting anything done for the next week or more. (Because they would have to sync every half hour or so for the next week)

like image 795
BCS Avatar asked Sep 25 '08 18:09

BCS


2 Answers

There is a commercial tool for exactly that use case called Semantic Merge. They provide a 15-day free trial, open source projects may use it for free (contact the support).

The company behind semantic merge also has a git client with integrated Sematic Merge which is currently beta (here, have some short intro videos).

like image 121
mbx Avatar answered Nov 10 '22 05:11

mbx


Keep renaming seperate from other refactorings. They can generally be automated and therefore making the changes is easy. You can even distribute scripts to allow other engineers with merge hell to perform the transformations on there files.

There is no easy way to automate refactorings, so keep it simple. A rename should only take minutes and you should be able to check out and commit with minimal testing.

like image 36
Dave Hillier Avatar answered Nov 10 '22 06:11

Dave Hillier