From: Junio C Hamano <gitster@pobox.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Steven Grimm <koreth@midwinter.com>,
Pierre Habouzit <madcoder@debian.org>,
git@vger.kernel.org
Subject: Re: [PATCH] git-revert is one of the most misunderstood command in git, help users out.
Date: Tue, 06 Nov 2007 03:08:53 -0800 [thread overview]
Message-ID: <7vk5oviqbe.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <7vsl3kjdct.fsf@gitster.siamese.dyndns.org> (Junio C. Hamano's message of "Mon, 05 Nov 2007 18:51:14 -0800")
Junio C Hamano <gitster@pobox.com> writes:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
>> In the same way, I would expect "git revert <commit> -- file" to undo the
>> changes in that commit to _that_ file (something like "git merge-file
>> file <commit>:file <commit>^:file"), but this time commit it, since it
>> was committed at one stage.
>
> Allowing people to revert or cherry pick partially by using
> paths limiter is a very good idea; ...
As Pierre said earlier, a partial revert via "revert <commit> --
<paths>" and a partial cherry-pick would make quite a lot of
sense, and in addition, it should not be too hard to add.
Reusing the 'merge-recursive' part should be almost trivial.
The only tricky part is coming up with a fake tree using base
and next commit in revert_or_cherry_pick() for this purpose.
When replaying the change from A->B (when cherry-picking, A is
the parent and B is what was named from the command line; when
reverting, they are the other way around), instead of doing the
three-way merge using:
merge-recursive A HEAD B
you would first come up with a modified tree B' that has the
identical contents to A _except_ the parts the path limiters
specify which are taken from B. Then running
merge-recursive A HEAD B'
would replay the revert or cherry-pick of change from A->B,
limited by the path, on top of the current HEAD.
As to "reverting to the index" case, if somebody is interested
in doing a builtin-checkout.c, please keep in mind that major
parts of that work should be made available to the
implementation of "git revert [--] <paths>", as it appears that
it will be exactly the same as "git checkout" with the same set
of options.
I am wondering what "git cherry-pick -- <paths>" should do. My
current thinking is that it would not make any sense at all.
next prev parent reply other threads:[~2007-11-06 11:09 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-05 19:01 [PATCH] git-revert is one of the most misunderstood command in git, help users out Pierre Habouzit
2007-11-05 19:04 ` Pierre Habouzit
2007-11-05 19:05 ` J. Bruce Fields
2007-11-05 19:10 ` Pierre Habouzit
2007-11-05 19:28 ` Steven Grimm
2007-11-05 19:50 ` Pierre Habouzit
2007-11-05 21:54 ` Alejandro Martinez Ruiz
2007-11-05 22:06 ` David Kastrup
2007-11-05 23:41 ` Alejandro Martinez Ruiz
2007-11-05 22:21 ` Junio C Hamano
2007-11-05 23:40 ` Johannes Schindelin
2007-11-06 0:08 ` Pierre Habouzit
2007-11-06 2:51 ` Junio C Hamano
2007-11-06 3:18 ` Johannes Schindelin
2007-11-06 4:54 ` Junio C Hamano
2007-11-06 8:49 ` Pierre Habouzit
2007-11-06 9:29 ` Mike Hommey
2007-11-06 9:37 ` Pierre Habouzit
2007-11-06 12:32 ` Johannes Schindelin
2007-11-06 18:06 ` Junio C Hamano
2007-11-06 18:27 ` Johannes Schindelin
2007-11-06 19:39 ` Pierre Habouzit
2007-11-06 19:42 ` Junio C Hamano
2007-11-06 22:21 ` Johannes Schindelin
2007-11-06 20:06 ` Robin Rosenberg
2007-11-06 20:13 ` Mike Hommey
2007-11-06 21:21 ` Robin Rosenberg
2007-11-06 22:25 ` Johannes Schindelin
2007-11-07 8:16 ` Mike Hommey
2007-11-07 11:08 ` Johannes Schindelin
2007-11-07 19:32 ` Robin Rosenberg
2007-11-07 20:01 ` Jakub Narebski
2007-11-07 9:03 ` David Kastrup
2007-11-06 11:08 ` Junio C Hamano [this message]
2007-11-06 11:51 ` Johannes Sixt
2007-11-06 12:16 ` Johannes Schindelin
2007-11-06 12:25 ` Johannes Schindelin
2007-11-06 12:48 ` Pierre Habouzit
2007-11-06 17:43 ` Wincent Colaiuta
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=7vk5oviqbe.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=koreth@midwinter.com \
--cc=madcoder@debian.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).