Is git
's merge conflict resolution inherently more efficient than other SCMs (CVS,Subversion,etc.), and also standalone merge tools? If so, why?
Clarification: here I'm more interested in the algorithm itself - is it any different from a plain diff3 method?
Some tools claim to be smarter in that(e.g. Guiffy), is it worth plugging one in as a git merge tool?
Is git any smarter in figuring out pieces of text moved within or across files ? (rather than reporting noisy conflicts.. I had a vague impression of that from Linus' talk).
Background: just did a huge merge using git-svn
which resulted in half the conflicts than I got with plain svn merge
(first merge with no tracking) .. so I'd like to understand why.
The are similar Qs/As around but they are more about the big picture of the process, and how merging fits in that more naturally. To that end, git
being 'optimised for merges' (as opposed to only branching), does it actually mean:
- less manual conflicts -- better auto-resolution algorithms (eg. renaming is handled nicely)
- safer operation -- auto-resolution leaves more/only real conflicts and less false alerts
- faster operation -- say, due to the lean & mean object model
- better tooling -- which makes the experience less painful, e.g. DAG-based merge tracking, mergetool, history query/visualisation, stash, rebase,etc...
- something else
- a combination of the above
? Now, I'm mostly interested in 1 & 2.