git reintegrate is a helper tool to manage integration branches, it
has all the options of other known tools.
This is a rewrite of John Keeping’s git-integration in Ruby, it has
essentially the same features and passes all the git-integration
tests, but it has more features.
One feature that is missing from git-integration is the ability to
parse existing integration branches.
To give a try you can do:
git clone https://github.com/gitster/git/ cd git git fetch -u origin 'refs/tags/*:refs/tags/*' 'refs/heads/*:refs/heads/*' git checkout pu git reintegrate --generate pu master
Which will generate the integration instructions for you:
% git reintegrate --cat base master merge jl/submodule-mv Moving a regular file in a repository with a .gitmodules file was producing a warning 'Could not find section in .gitmodules where path=<filename>'. merge ap/remote-hg-unquote-cquote A fast-import stream expresses a pathname with funny characters by quoting them in C style; remote-hg remote helper forgot to unquote such a path. merge jk/for-each-ref-skip-parsing merge jk/pack-corruption-post-mortem merge jk/reset-p-current-head-fix "git reset -p HEAD" has codepath to special case it from resetting to contents of other commits, but recent change broke it. ...
It also has support for “evil merges”, so it should be perfectly
usable for git.git maintenance.
You can edit the instructions with
git reintegrate --edit.
The simplest way to begin an integration branch is with:
git reintegrate --create pu master git reintegrate --add=branch1 --add=branch2 --add=branch3
To generate the integration branch run
git reintegrate --rebuild, if
there are merge conflicts, solve them and continue with
Despite having more features, the code is actually smaller thanks to
Changes since v0.1:
Add support for empty commits
Add support for pause command
Add bash completion
Felipe Contreras (26): Add copyright and license notices Fix EDITOR support with arguments Trivial style cleanup Improve command regex Add support for empty commits test: improve check_int() Add support for 'pause' command doc: rename manpage file doc: update options doc: add description doc: add missing instruction commands doc: cleanup . command Verify branches after parsing test: fix test names Remove unused statements Update README test: cleanup instruction sheets Update copyright notices Add bash completion build: add installation stuff readme: add installation instructions Add gitignore for documentation trvis: initial configuration travis: add verbosity test: add test-lib helper travis: remove Ruby 1.8
Felipe Contreras wrote on 18 May 2014