From: Junio C Hamano <gitster@pobox.com>
To: Clemens Buchacher <drizzd@aon.at>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] rebase --fix: interactive fixup mode
Date: Sun, 08 Jan 2012 14:58:42 -0800 [thread overview]
Message-ID: <7vfwfpg5st.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <20120108213134.GA18671@ecki.lan> (Clemens Buchacher's message of "Sun, 8 Jan 2012 22:31:34 +0100")
Clemens Buchacher <drizzd@aon.at> writes:
> Interactive rebase is frequently used not to rebase history, but to
> manipulate recent commits. This is typically done using the following
> command:
>
> git rebase -i HEAD~N
>
> Where N has to be large enough such that the the range HEAD~N..HEAD
> contains the desired commits. At the same time, it should be small
> enough such that the range HEAD~N..HEAD does not include published
> commits or a merge commit. Otherwise, the user may accidentally change
> published history. Rebasing a merge commit can also have the generally
> undesirable effect of linearizing the merge history.
>
> In order to determine a suitable range automatically, it is a reasonable
> heuristic to rebase onto the most recent merge commit.
I understand the problem you are trying to solve, but I am not sure if
this is a good idea from the UI point of view for two reasons.
- "We want to limit the extent of the operation to commits since the last
merge" is by itself a reasonable thing to ask, and I do not think it
should be limited to "rebase". If we had an extended SHA-1 syntax to
express it, for example, you may want to say "I want to see what I did
since the last merge" and run "git log $last_merge_before_HEAD..".
Perhaps HEAD~{merge} or something?
- If your "rebase --fix" is to "fix" things, what is "rebase -i" about?
Isn't it also about fixing? I imagine that ordinary people expect a
"fix" option that takes a parameter would take a commit to be fixed,
and drive the rebase machinery to quickly fix it; in other words,
$ git rebase --fix=':/^reword the greeting message'
may internally run "rebase -i $(git rev-parse ':/^rewor...')^", with
the insn sheet already prepared to "edit" the first commit in it, and
may even return the control back to the user without showing the insn
sheet in the editor.
Hmm?
next prev parent reply other threads:[~2012-01-08 22:58 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-08 21:31 [PATCH] rebase --fix: interactive fixup mode Clemens Buchacher
2012-01-08 21:57 ` Jakub Narebski
2012-01-08 22:19 ` Clemens Buchacher
2012-01-08 22:01 ` Jonathan Nieder
2012-01-08 22:25 ` Clemens Buchacher
2012-01-09 1:44 ` Nguyen Thai Ngoc Duy
2012-01-09 8:43 ` Jonathan Nieder
2012-01-08 22:58 ` Junio C Hamano [this message]
2012-01-09 20:33 ` Clemens Buchacher
2012-01-09 8:40 ` Michael Haggerty
2012-01-10 19:58 ` Neal Kreitzinger
2012-01-09 9:13 ` Thomas Rast
2012-01-09 20:16 ` Clemens Buchacher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7vfwfpg5st.fsf@alter.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=drizzd@aon.at \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).