On Tue, Jul 30, 2013 at 09:45:49AM -0700, Junio C Hamano wrote: > John Keeping <john@xxxxxxxxxxxxx> writes: > > > I wrote this script a few months ago and have been using it pretty much > > daily since then, so I figure it's time to see if anyone else finds it > > useful... > > > > git-integration [1] is a script to help manage integration branches in > > Git. By defining a base point and a set of branches to be merged to > > form the integration branch, git-integration lets you easily rebuild an > > integration branch when anything in it changes, as well as showing you > > the status of all of the branches in the integration branch. > > > > For example, the instruction sheet for git-integration's "pu" branch > > recently looked like this: > > > > base master > > > > merge make-clean > > > > Add a "clean" target to the makefile. > > > > merge version > > > > Support for "--version" option. > > > > N.B. this builds on "make-clean". > > > > merge skip-option > > > > Needs more work to be able to handle "branch not found". > > > > This tells git-integration to base the "pu" branch on "master" and merge > > the "make-clean", "version" and "skip-option" branches in. The comments > > following the "merge" instructions are added to the commit message for > > the corresponding merge commit. When I want to rebuild the "pu" branch > > I simply do: > > > > $ git integration --rebuild pu > > > > To change the contents of the branch, I either edit the instruction > > sheet manually: > > > > $ git integration --edit pu > > > > or quickly add a new branch from the command line: > > > > $ git integration --add my-new-branch pu > > > > In fact, I can combine these to get the benefit of bash-completion on > > the branch name and the ability to edit the instruction sheet - when > > multiple commands are specified, git-integration performs each of them > > in a sensible order, described in the manpage [2]. > > > > > > [1] http://johnkeeping.github.io/git-integration/ > > [2] http://johnkeeping.github.io/git-integration/git-integration.html > > Interesting. > > Would it help me to replay "evil merges" I previously made and avoid > necessity to write merge log messages repeatedly? Currently it does nothing beyond having the ability to continue automatically if rerere manages to resolve all conflicts (disabled by default). There is no equivalent of your refs/merge-fix/ feature, although I think I might add one soon ;-). Since the commit messages for the merge commits come from the instruction sheet, it does avoid the need to write them repeatedly - if you want to change the merge message you can simply update the instruction sheet and rebuild. > In short, can I replace my Meta/Reintegrate and Meta/cook with this > (see Documentation/howto/maintain-git.txt)? It performs the same basic function as those scripts, but it's quite a lot simpler and hasn't been designed for the git.git workflow, so I don't think it's suitable for replacing your existing scripts. If I were starting from scratch and attempting to implement the git.git workflow on top of git-integration, I think I would make whats-cooking.txt a build artifact generated from the instruction sheet for pu. This would require some new commands to be added to git-integration's instruction sheet to let it assign sections to branches, but ought to be possible. I expect there would be some subtleties though - certainly git-integration's "--status" output does not handle all of the cases the Meta/cook does, not least because it only compares against a single base branch. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html