{"thread":{"id":"34570","subject":"ANNOUNCE: git-integration -- Easily manage integration branches","startedAt":"2013-07-30T15:46:20Z","lastAt":"2013-07-30T17:57:11Z","messageCount":3,"participants":["John Keeping","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"224302","messageId":"20130730154620.GN2337@serenity.lan","threadId":"34570","inReplyTo":null,"subject":"ANNOUNCE: git-integration -- Easily manage integration branches","fromName":"John Keeping","fromEmail":"john@keeping.me.uk","sentAt":"2013-07-30T15:46:20Z","receivedAt":"2013-07-30T15:46:20Z","isPatch":false,"sender":{"key":"john@keeping.me.uk","avatar":"https://avatars.githubusercontent.com/u/1702081?v=4"},"body":"I wrote this script a few months ago and have been using it pretty much\ndaily since then, so I figure it's time to see if anyone else finds it\nuseful...\n\ngit-integration [1] is a script to help manage integration branches in\nGit.  By defining a base point and a set of branches to be merged to\nform the integration branch, git-integration lets you easily rebuild an\nintegration branch when anything in it changes, as well as showing you\nthe status of all of the branches in the integration branch.\n\nFor example, the instruction sheet for git-integration's \"pu\" branch\nrecently looked like this:\n\n\tbase master\n\n\tmerge make-clean\n\n\t  Add a \"clean\" target to the makefile.\n\n\tmerge version\n\n\t  Support for \"--version\" option.\n\n\t  N.B. this builds on \"make-clean\".\n\n\tmerge skip-option\n\n\t  Needs more work to be able to handle \"branch not found\".\n\nThis tells git-integration to base the \"pu\" branch on \"master\" and merge\nthe \"make-clean\", \"version\" and \"skip-option\" branches in.  The comments\nfollowing the \"merge\" instructions are added to the commit message for\nthe corresponding merge commit.  When I want to rebuild the \"pu\" branch\nI simply do:\n\n\t$ git integration --rebuild pu\n\nTo change the contents of the branch, I either edit the instruction\nsheet manually:\n\n\t$ git integration --edit pu\n\nor quickly add a new branch from the command line:\n\n\t$ git integration --add my-new-branch pu\n\nIn fact, I can combine these to get the benefit of bash-completion on\nthe branch name and the ability to edit the instruction sheet - when\nmultiple commands are specified, git-integration performs each of them\nin a sensible order, described in the manpage [2].\n\n\n[1] http://johnkeeping.github.io/git-integration/\n[2] http://johnkeeping.github.io/git-integration/git-integration.html\n"},{"id":"224306","messageId":"7vli4ovvwi.fsf@alter.siamese.dyndns.org","threadId":"34570","inReplyTo":"20130730154620.GN2337@serenity.lan","subject":"Re: ANNOUNCE: git-integration -- Easily manage integration branches","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2013-07-30T16:45:49Z","receivedAt":"2013-07-30T16:45:49Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"John Keeping <john@keeping.me.uk> writes:\n\n> I wrote this script a few months ago and have been using it pretty much\n> daily since then, so I figure it's time to see if anyone else finds it\n> useful...\n>\n> git-integration [1] is a script to help manage integration branches in\n> Git.  By defining a base point and a set of branches to be merged to\n> form the integration branch, git-integration lets you easily rebuild an\n> integration branch when anything in it changes, as well as showing you\n> the status of all of the branches in the integration branch.\n>\n> For example, the instruction sheet for git-integration's \"pu\" branch\n> recently looked like this:\n>\n> \tbase master\n>\n> \tmerge make-clean\n>\n> \t  Add a \"clean\" target to the makefile.\n>\n> \tmerge version\n>\n> \t  Support for \"--version\" option.\n>\n> \t  N.B. this builds on \"make-clean\".\n>\n> \tmerge skip-option\n>\n> \t  Needs more work to be able to handle \"branch not found\".\n>\n> This tells git-integration to base the \"pu\" branch on \"master\" and merge\n> the \"make-clean\", \"version\" and \"skip-option\" branches in.  The comments\n> following the \"merge\" instructions are added to the commit message for\n> the corresponding merge commit.  When I want to rebuild the \"pu\" branch\n> I simply do:\n>\n> \t$ git integration --rebuild pu\n>\n> To change the contents of the branch, I either edit the instruction\n> sheet manually:\n>\n> \t$ git integration --edit pu\n>\n> or quickly add a new branch from the command line:\n>\n> \t$ git integration --add my-new-branch pu\n>\n> In fact, I can combine these to get the benefit of bash-completion on\n> the branch name and the ability to edit the instruction sheet - when\n> multiple commands are specified, git-integration performs each of them\n> in a sensible order, described in the manpage [2].\n>\n>\n> [1] http://johnkeeping.github.io/git-integration/\n> [2] http://johnkeeping.github.io/git-integration/git-integration.html\n\nInteresting.\n\nWould it help me to replay \"evil merges\" I previously made and avoid\nnecessity to write merge log messages repeatedly?\n\nIn short, can I replace my Meta/Reintegrate and Meta/cook with this\n(see Documentation/howto/maintain-git.txt)?\n"},{"id":"224307","messageId":"20130730175710.GO2337@serenity.lan","threadId":"34570","inReplyTo":"7vli4ovvwi.fsf@alter.siamese.dyndns.org","subject":"Re: ANNOUNCE: git-integration -- Easily manage integration branches","fromName":"John Keeping","fromEmail":"john@keeping.me.uk","sentAt":"2013-07-30T17:57:11Z","receivedAt":"2013-07-30T17:57:11Z","isPatch":false,"sender":{"key":"john@keeping.me.uk","avatar":"https://avatars.githubusercontent.com/u/1702081?v=4"},"body":"On Tue, Jul 30, 2013 at 09:45:49AM -0700, Junio C Hamano wrote:\n> John Keeping <john@keeping.me.uk> writes:\n> \n> > I wrote this script a few months ago and have been using it pretty much\n> > daily since then, so I figure it's time to see if anyone else finds it\n> > useful...\n> >\n> > git-integration [1] is a script to help manage integration branches in\n> > Git.  By defining a base point and a set of branches to be merged to\n> > form the integration branch, git-integration lets you easily rebuild an\n> > integration branch when anything in it changes, as well as showing you\n> > the status of all of the branches in the integration branch.\n> >\n> > For example, the instruction sheet for git-integration's \"pu\" branch\n> > recently looked like this:\n> >\n> > \tbase master\n> >\n> > \tmerge make-clean\n> >\n> > \t  Add a \"clean\" target to the makefile.\n> >\n> > \tmerge version\n> >\n> > \t  Support for \"--version\" option.\n> >\n> > \t  N.B. this builds on \"make-clean\".\n> >\n> > \tmerge skip-option\n> >\n> > \t  Needs more work to be able to handle \"branch not found\".\n> >\n> > This tells git-integration to base the \"pu\" branch on \"master\" and merge\n> > the \"make-clean\", \"version\" and \"skip-option\" branches in.  The comments\n> > following the \"merge\" instructions are added to the commit message for\n> > the corresponding merge commit.  When I want to rebuild the \"pu\" branch\n> > I simply do:\n> >\n> > \t$ git integration --rebuild pu\n> >\n> > To change the contents of the branch, I either edit the instruction\n> > sheet manually:\n> >\n> > \t$ git integration --edit pu\n> >\n> > or quickly add a new branch from the command line:\n> >\n> > \t$ git integration --add my-new-branch pu\n> >\n> > In fact, I can combine these to get the benefit of bash-completion on\n> > the branch name and the ability to edit the instruction sheet - when\n> > multiple commands are specified, git-integration performs each of them\n> > in a sensible order, described in the manpage [2].\n> >\n> >\n> > [1] http://johnkeeping.github.io/git-integration/\n> > [2] http://johnkeeping.github.io/git-integration/git-integration.html\n> \n> Interesting.\n> \n> Would it help me to replay \"evil merges\" I previously made and avoid\n> necessity to write merge log messages repeatedly?\n\nCurrently it does nothing beyond having the ability to continue\nautomatically if rerere manages to resolve all conflicts (disabled by\ndefault).  There is no equivalent of your refs/merge-fix/ feature,\nalthough I think I might add one soon ;-).\n\nSince the commit messages for the merge commits come from the\ninstruction sheet, it does avoid the need to write them repeatedly - if\nyou want to change the merge message you can simply update the\ninstruction sheet and rebuild.\n\n> In short, can I replace my Meta/Reintegrate and Meta/cook with this\n> (see Documentation/howto/maintain-git.txt)?\n\nIt performs the same basic function as those scripts, but it's quite a\nlot simpler and hasn't been designed for the git.git workflow, so I\ndon't think it's suitable for replacing your existing scripts.\n\nIf I were starting from scratch and attempting to implement the git.git\nworkflow on top of git-integration, I think I would make\nwhats-cooking.txt a build artifact generated from the instruction sheet\nfor pu.  This would require some new commands to be added to\ngit-integration's instruction sheet to let it assign sections to\nbranches, but ought to be possible.  I expect there would be some\nsubtleties though - certainly git-integration's \"--status\" output does\nnot handle all of the cases the Meta/cook does, not least because it\nonly compares against a single base branch.\n"}]}