* rebase autosquash doesn't recognise a chain of fixups @ 2011-04-05 15:41 Carlos Martín Nieto 2011-04-05 15:48 ` Vincent van Ravesteijn 2011-04-05 17:34 ` Junio C Hamano 0 siblings, 2 replies; 7+ messages in thread From: Carlos Martín Nieto @ 2011-04-05 15:41 UTC (permalink / raw) To: git Hello, Say I have the following commits: 5154127 fixup! fixup! one 0d130d8 fixup! one 0869d30 one because I keep executing `git commit -a --fixup HEAD`. When I want to squash them all into 0869d30, I do `git rebase -i --autosquash 0869d30^` and I get pick 0869d30 one fixup 0d130d8 fixup! one pick 5154127 fixup! fixup! one when I was hoping for pick 0869d30 one fixup 0d130d8 fixup! one fixup 5154127 fixup! fixup! one Changing the options to the latter one works (as in, the patches apply). Is this expected? Am I just too lazy and should look up the commit I want to fixup? cmn ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: rebase autosquash doesn't recognise a chain of fixups 2011-04-05 15:41 rebase autosquash doesn't recognise a chain of fixups Carlos Martín Nieto @ 2011-04-05 15:48 ` Vincent van Ravesteijn 2011-04-05 16:03 ` Carlos Martín Nieto 2011-04-05 17:34 ` Junio C Hamano 1 sibling, 1 reply; 7+ messages in thread From: Vincent van Ravesteijn @ 2011-04-05 15:48 UTC (permalink / raw) To: Carlos Martín Nieto; +Cc: git On 5-4-2011 17:41, Carlos Martín Nieto wrote: > Hello, > > Say I have the following commits: > > 5154127 fixup! fixup! one > 0d130d8 fixup! one > 0869d30 one > > because I keep executing `git commit -a --fixup HEAD`. > > Am I just too lazy and should look up the commit I want to fixup? I would use 'git commit --amend -a' instead if I am already sure that I want to squash my commit into the previous one. Vincent ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: rebase autosquash doesn't recognise a chain of fixups 2011-04-05 15:48 ` Vincent van Ravesteijn @ 2011-04-05 16:03 ` Carlos Martín Nieto 0 siblings, 0 replies; 7+ messages in thread From: Carlos Martín Nieto @ 2011-04-05 16:03 UTC (permalink / raw) To: Vincent van Ravesteijn; +Cc: Carlos Martín Nieto, git On Tue, Apr 05, 2011 at 05:48:59PM +0200, Vincent van Ravesteijn wrote: > On 5-4-2011 17:41, Carlos Martín Nieto wrote: > >Hello, > > > > Say I have the following commits: > > > > 5154127 fixup! fixup! one > > 0d130d8 fixup! one > > 0869d30 one > > > >because I keep executing `git commit -a --fixup HEAD`. > > > >Am I just too lazy and should look up the commit I want to fixup? > > I would use 'git commit --amend -a' instead if I am already sure > that I want to squash my commit into the previous one. That does make more sense. I guess I was just too excited about discovering fixups :) cmn ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: rebase autosquash doesn't recognise a chain of fixups 2011-04-05 15:41 rebase autosquash doesn't recognise a chain of fixups Carlos Martín Nieto 2011-04-05 15:48 ` Vincent van Ravesteijn @ 2011-04-05 17:34 ` Junio C Hamano 2011-04-05 18:02 ` Kevin Ballard 1 sibling, 1 reply; 7+ messages in thread From: Junio C Hamano @ 2011-04-05 17:34 UTC (permalink / raw) To: Pat Notz; +Cc: Kevin Ballard, git, Carlos Martín Nieto Carlos Martín Nieto <cmn@elego.de> writes: > Say I have the following commits: > > 5154127 fixup! fixup! one > 0d130d8 fixup! one > 0869d30 one > > because I keep executing `git commit -a --fixup HEAD`. When I want to > squash them all into 0869d30, I do `git rebase -i --autosquash > 0869d30^` and I get > > pick 0869d30 one > fixup 0d130d8 fixup! one > pick 5154127 fixup! fixup! one The way Kevin's d3d7a42 (rebase: better rearranging of fixup!/squash! lines with --autosquash, 2010-11-04) series works is to match "fixup!" only with "pick"; a later "fixup!" never matches an earlier "fixup!" but a "pick" can be matched against more than one "fixup!". I think one way to make this work is to fix what Pat did in d71b8ba (commit: --fixup option for use with rebase --autosquash, 2010-11-02). Perhaps like this, but I'll leave additions of test scripts to t3415 to others. -- >8 -- Subject: commit --fixup: do not duplicate "fixup! " at the beginning The "rebase -i" command can match more than one "fixup!" against a single "pick" in the right order thanks to the earlier d3d7a42 (rebase: better rearranging of fixup!/squash! lines with --autosquash, 2010-11-04), but a "fixup!" entry is never matched with another "fixup!" entry. When creating a commit marked to fix up an earlier commit with --fixup, we can mark it to look for the original and fix that one up. Signed-off-by: Junio C Hamano <gitster@pobox.com> --- builtin/commit.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/builtin/commit.c b/builtin/commit.c index 67757e9..b3c4d63 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -668,6 +668,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix, ctx.output_encoding = get_commit_output_encoding(); format_commit_message(commit, "fixup! %s\n\n", &sb, &ctx); + while (!prefixcmp(sb.buf, "fixup! fixup!")) + strbuf_splice(&sb, 0, 7, "", 0); hook_arg1 = "message"; } else if (!stat(git_path("MERGE_MSG"), &statbuf)) { if (strbuf_read_file(&sb, git_path("MERGE_MSG"), 0) < 0) ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: rebase autosquash doesn't recognise a chain of fixups 2011-04-05 17:34 ` Junio C Hamano @ 2011-04-05 18:02 ` Kevin Ballard 2011-04-05 18:27 ` Junio C Hamano 0 siblings, 1 reply; 7+ messages in thread From: Kevin Ballard @ 2011-04-05 18:02 UTC (permalink / raw) To: Junio C Hamano; +Cc: Pat Notz, git@vger.kernel.org, Carlos Martín Nieto This seems unnecessary. `git commit --fixup HEAD` doesn't really make any sense at all to run when you can say `git commit --amend` instead, -Kevin On Apr 5, 2011, at 10:34 AM, Junio C Hamano <gitster@pobox.com> wrote: > Carlos Martín Nieto <cmn@elego.de> writes: > >> Say I have the following commits: >> >> 5154127 fixup! fixup! one >> 0d130d8 fixup! one >> 0869d30 one >> >> because I keep executing `git commit -a --fixup HEAD`. When I want to >> squash them all into 0869d30, I do `git rebase -i --autosquash >> 0869d30^` and I get >> >> pick 0869d30 one >> fixup 0d130d8 fixup! one >> pick 5154127 fixup! fixup! one > > The way Kevin's d3d7a42 (rebase: better rearranging of fixup!/squash! > lines with --autosquash, 2010-11-04) series works is to match "fixup!" > only with "pick"; a later "fixup!" never matches an earlier "fixup!" but a > "pick" can be matched against more than one "fixup!". > > I think one way to make this work is to fix what Pat did in d71b8ba > (commit: --fixup option for use with rebase --autosquash, 2010-11-02). > > Perhaps like this, but I'll leave additions of test scripts to t3415 to > others. > > -- >8 -- > Subject: commit --fixup: do not duplicate "fixup! " at the beginning > > The "rebase -i" command can match more than one "fixup!" against a single > "pick" in the right order thanks to the earlier d3d7a42 (rebase: better > rearranging of fixup!/squash! lines with --autosquash, 2010-11-04), but a > "fixup!" entry is never matched with another "fixup!" entry. > > When creating a commit marked to fix up an earlier commit with --fixup, we > can mark it to look for the original and fix that one up. > > Signed-off-by: Junio C Hamano <gitster@pobox.com> > --- > builtin/commit.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/builtin/commit.c b/builtin/commit.c > index 67757e9..b3c4d63 100644 > --- a/builtin/commit.c > +++ b/builtin/commit.c > @@ -668,6 +668,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix, > ctx.output_encoding = get_commit_output_encoding(); > format_commit_message(commit, "fixup! %s\n\n", > &sb, &ctx); > + while (!prefixcmp(sb.buf, "fixup! fixup!")) > + strbuf_splice(&sb, 0, 7, "", 0); > hook_arg1 = "message"; > } else if (!stat(git_path("MERGE_MSG"), &statbuf)) { > if (strbuf_read_file(&sb, git_path("MERGE_MSG"), 0) < 0) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: rebase autosquash doesn't recognise a chain of fixups 2011-04-05 18:02 ` Kevin Ballard @ 2011-04-05 18:27 ` Junio C Hamano [not found] ` <BANLkTimqvu7c559_AQ6yLxPACOxD0ciNxQ@mail.gmail.com> 0 siblings, 1 reply; 7+ messages in thread From: Junio C Hamano @ 2011-04-05 18:27 UTC (permalink / raw) To: Kevin Ballard; +Cc: Pat Notz, git@vger.kernel.org, Carlos Martín Nieto Kevin Ballard <kevin@sb.org> writes: > This seems unnecessary. `git commit --fixup HEAD` doesn't really make any sense at all to run when you can say `git commit --amend` instead, What about this sequence? git commit -m 'foo' git commit -m 'bar' git commit --fixup HEAD~1 git commit -m 'baz' git commit --fixup HEAD~1 ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <BANLkTimqvu7c559_AQ6yLxPACOxD0ciNxQ@mail.gmail.com>]
* Re: rebase autosquash doesn't recognise a chain of fixups [not found] ` <BANLkTimqvu7c559_AQ6yLxPACOxD0ciNxQ@mail.gmail.com> @ 2011-04-05 21:03 ` Junio C Hamano 0 siblings, 0 replies; 7+ messages in thread From: Junio C Hamano @ 2011-04-05 21:03 UTC (permalink / raw) To: Kevin Ballard; +Cc: Pat Notz, git@vger.kernel.org, Carlos Martín Nieto Kevin Ballard <kevin@sb.org> writes: > On Tue, Apr 5, 2011 at 11:27 AM, Junio C Hamano <gitster@pobox.com> wrote: > >> Kevin Ballard <kevin@sb.org> writes: >> >> > This seems unnecessary. `git commit --fixup HEAD` doesn't really make any >> sense at all to run when you can say `git commit --amend` instead, >> >> What about this sequence? >> >> git commit -m 'foo' >> git commit -m 'bar' >> git commit --fixup HEAD~1 >> git commit -m 'baz' >> git commit --fixup HEAD~1 >> >> > You raise a good point. I personally think someone who types that deserves > what he gets, but I have no objection to being intelligent about duplicate > fixup! prefixes. Of course an alternative solution is to fix this on the "rebase -i" side, by building on top of your d3d7a42 (rebase: better rearranging of fixup!/squash! lines with --autosquash, 2010-11-04). Or perhaps we would want to do both. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-04-05 21:04 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-04-05 15:41 rebase autosquash doesn't recognise a chain of fixups Carlos Martín Nieto 2011-04-05 15:48 ` Vincent van Ravesteijn 2011-04-05 16:03 ` Carlos Martín Nieto 2011-04-05 17:34 ` Junio C Hamano 2011-04-05 18:02 ` Kevin Ballard 2011-04-05 18:27 ` Junio C Hamano [not found] ` <BANLkTimqvu7c559_AQ6yLxPACOxD0ciNxQ@mail.gmail.com> 2011-04-05 21:03 ` Junio C Hamano
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).