threads / discuss / 34430

ANNOUNCE: git-imerge -- Incremental merge and rebase for git

Subject: ANNOUNCE: git-imerge -- Incremental merge and rebase for git

## tl;dr

2 messages between Jul 14, 2013 and Jul 15, 2013.

replies: 1people: 2as markdown or json

Michael Haggerty· Jul 14, 2013, 05:33 UTC · lore

I've alluded to this little project of mine on the mailing list before, but I've never really announced it properly. So here we go...

git-imerge [1] is an open-source tool that helps you perform difficult Git merges and rebases by allowing conflicts to be resolved incrementally. The tool breaks the full merge down into pairwise merges of one commit from each branch. When a pairwise merge conflicts, the tool asks you to resolve the conflict, which is hopefully small enough to be tractable. Each completed pairwise merge is recorded as a step towards completing the full merge. When all of the pairwise merges are done, the results can be converted into a merge or rebase as you choose.

git-imerge has two primary goals:
* Reduce the pain of resolving merge conflicts to its unavoidable
  minimum, by finding and presenting the smallest possible conflicts,
  namely those between the changes introduced by one commit from each
  branch.
* Allow a merge to be saved, tested, interrupted, published, and
  collaborated on while it is in progress.

The hope is to rescue that branch that has diverged so far from master that merging it seems intractable and the only alternative seems to be to abandon the branch and start again. (I think we've all been there!)

I think that it is easiest to understand the concept of incremental merging visually, and therefore I recommend the video of my git-imerge presentation [2] from the GitMerge 2013 conference (20 min) as a good introduction. The full slides for that talk are available in the git-imerge repository under doc/presentations/GitMerge-2013. At the same conference, I was interviewed about git-imerge by Thomas Ferris Nicolaisen for his GitMinutes Podcast #12 [3].

To learn how to use the git-imerge tool itself, I suggest the blog article "git-imerge: A Practical Introduction" [4] and also the help built unto the command ("git-imerge --help" and "git-imerge SUBCOMMAND --help"). If you want more information, the theory and benefits of incremental merging are described in minute detail in a series of blog articles [5].

git-imerge is still experimental, due to a lack of time to work on it. But it is already (cautiously) usable, and I am very excited about the idea and would love to get feedback and help from the community.

Michael

[1] https://github.com/mhagger/git-imerge [2] http://www.youtube.com/watch?v=FMZ2_-Ny_zc [3] http://episodes.gitminutes.com/2013/06/gitminutes-12-git-merge-2013-part-4.html [4] http://softwareswirl.blogspot.com/2013/05/git-imerge-practical-introduction.html [5] http://softwareswirl.blogspot.com/search/label/git-imerge

-- 
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/
Matthieu Moy· Jul 15, 2013, 08:56 UTC · re: Michael Haggerty · lore

Re: ANNOUNCE: git-imerge -- Incremental merge and rebase for git

Michael Haggerty <mhagger@alum.mit.edu> writes:
Show 6 quoted lines
> I've alluded to this little project of mine on the mailing list before,
> but I've never really announced it properly.  So here we go...
>
> git-imerge [1] is an open-source tool that helps you perform difficult
> Git merges and rebases by allowing conflicts to be resolved
> incrementally.
Seems cool! :-)
Added to:
  https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#imerge
-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

← back to recent threads