From: Junio C Hamano <gitster@pobox.com>
To: "Avery Pennarun" <apenwarr@gmail.com>
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Theodore Tso" <tytso@mit.edu>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Johannes Sixt" <j.sixt@viscovery.net>,
"Boaz Harrosh" <bharrosh@panasas.com>,
"Steven Walter" <stevenrwalter@gmail.com>,
git@vger.kernel.org, jeske@google.com
Subject: Re: Re* [PATCH] cmd_reset: don't trash uncommitted changes unless told to
Date: Wed, 25 Jun 2008 14:34:06 -0700 [thread overview]
Message-ID: <7vskv1xkq9.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <7vwskdxl6z.fsf_-_@gitster.siamese.dyndns.org> (Junio C. Hamano's message of "Wed, 25 Jun 2008 14:24:04 -0700")
Junio C Hamano <gitster@pobox.com> writes:
> "Avery Pennarun" <apenwarr@gmail.com> writes:
>
>> On 6/25/08, Junio C Hamano <gitster@pobox.com> wrote:
>>> "Avery Pennarun" <apenwarr@gmail.com> writes:
>>> >> * You say "git checkout -- file" when you want to "check out the file
>>> >> from the index";
>>> >
>>> > The real question here is the --. Is it strictly needed? It's
>>> > optional in things like git-diff, which just do their best to guess
>>> > what you mean if you don't use the --.
>>>
>>> No, I wrote -- only for clarity, because you can happen to have a branch
>>> whose name is the same as the file. Otherwise you can safely omit it,
>>> just like git-diff and any other commands that follow the -- convention.
>>
>> Oops, I got mixed up. Only git-reset requires the --. Would it make
>> sense to bring git-reset into line with everything else, then?
>
> Ah, interesting. It appears that the current "reset in C" inherited that
> bug from the scripted version. It works most of the time without --
> except for one place.
>
> # prove that the work tree is clean...
> $ git reset --hard
> HEAD is now at 7b7f39e Fix use after free() in builtin-fetch
> $ git diff
> $ git diff --cached
>
> # what's different since HEAD^?
> $ git diff --name-only HEAD^
> builtin-fetch.c
>
> # reset the path
> $ git reset HEAD^ builtin-fetch.c
> builtin-fetch.c: needs update
>
> # prove that HEAD did not move
> $ git rev-parse HEAD
> 7b7f39eae6ab0bbcc68d3c42a5b23595880e528f
> # prove that work tree did not change
> $ git diff HEAD
> # prove that index has old version
> $ git diff --cached HEAD^
>
> Reset is about resetting the index and --hard option tells it to propagate
> the change down to the work tree as well.
>
> There is no "reset to the index", so "reset -- path" would be a redundant
> way to spell "reset HEAD path" or "reset HEAD -- path" which is even more
> redundant.
>
> As long as builti-fetch.c is not a valid ref, you should be able to get
> out of the above mess by any one of:
>
> $ git reset builtin-fetch.c
> $ git reset -- builtin-fetch.c
> $ git reset HEAD builtin-fetch.c
>
> but the first one complains, saying builtin-fetch.c is not a valid ref.
>
> This may help.
>
> diff --git a/builtin-reset.c b/builtin-reset.c
> index f34acb1..c7d60f5 100644
> --- a/builtin-reset.c
> +++ b/builtin-reset.c
> @@ -194,9 +194,21 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
> reflog_action = args_to_str(argv);
> setenv("GIT_REFLOG_ACTION", reflog_action, 0);
>
> - if (i < argc && strcmp(argv[i], "--"))
> - rev = argv[i++];
> -
> + /*
> + * Possible arguments are:
> + *
> + * git reset <rev> <paths>...
> + * git reset <rev> -- <paths>...
> + * git reset -- <paths>...
> + * git reset <paths>...
> + */
> + if (i < argc && strcmp(argv[i], "--")) {
> + /* could be "git reset <path>" */
> + if (get_sha1(argv[i+1], sha1))
typofix: s/i+1/i/;
> + ;
> + else
> + rev = argv[i++];
> + }
> if (get_sha1(rev, sha1))
> die("Failed to resolve '%s' as a valid ref.", rev);
>
next prev parent reply other threads:[~2008-06-25 21:35 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <jeske@willow=01l5V7waFEDjChmh>
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5V7wbFEDjCX7V>
2008-06-24 1:47 ` why is git destructive by default? (i suggest it not be!) David Jeske
2008-06-24 17:11 ` Boaz Harrosh
2008-06-24 17:19 ` Boaz Harrosh
2008-06-24 19:08 ` Jakub Narebski
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5zrLdFEDjCV3U>
2008-06-24 20:04 ` David Jeske
2008-06-24 21:42 ` Brandon Casey
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l63P33FEDjCVQ0>
2008-06-24 22:13 ` David Jeske
2008-06-24 22:13 ` David Jeske
2008-06-24 22:54 ` Theodore Tso
2008-06-24 23:07 ` Junio C Hamano
2008-06-25 2:26 ` Theodore Tso
2008-06-25 8:58 ` Jakub Narebski
2008-06-25 9:14 ` Junio C Hamano
2008-06-26 15:13 ` Brandon Casey
2008-06-24 22:21 ` Steven Walter
2008-06-24 22:21 ` [PATCH] cmd_reset: don't trash uncommitted changes unless told to Steven Walter
2008-06-24 22:31 ` Junio C Hamano
2008-06-25 9:12 ` Boaz Harrosh
2008-06-25 9:23 ` Junio C Hamano
2008-06-25 9:59 ` Boaz Harrosh
2008-06-25 10:16 ` Johannes Schindelin
2008-06-25 10:24 ` Matthias Kestenholz
2008-06-25 10:46 ` Anton Gladkov
2008-06-25 12:33 ` Johannes Schindelin
2008-06-25 14:49 ` [PATCH] cmd_reset: don't trash uncommitted changes unless toldto Craig L. Ching
2008-06-25 15:18 ` Anton Gladkov
2008-06-25 10:41 ` [PATCH] cmd_reset: don't trash uncommitted changes unless told to Johannes Sixt
2008-06-25 12:38 ` Johannes Schindelin
2008-06-25 13:51 ` Theodore Tso
2008-06-25 17:22 ` Junio C Hamano
2008-06-25 19:50 ` Theodore Tso
2008-06-25 20:04 ` Avery Pennarun
2008-06-25 20:11 ` Junio C Hamano
2008-06-25 20:22 ` Avery Pennarun
2008-06-25 20:48 ` Junio C Hamano
2008-06-25 20:58 ` Avery Pennarun
2008-06-25 21:24 ` Re* " Junio C Hamano
2008-06-25 21:34 ` Junio C Hamano [this message]
2008-06-26 1:26 ` Junio C Hamano
2008-06-25 20:37 ` Steven Walter
2008-06-25 20:38 ` Theodore Tso
2008-06-25 20:50 ` Junio C Hamano
2008-06-25 21:05 ` Theodore Tso
2008-06-25 21:35 ` Junio C Hamano
2008-06-26 5:16 ` Junio C Hamano
[not found] ` <20080627193325.6117@nanako3.lavabit.com>
2008-06-27 22:11 ` Junio C Hamano
2008-06-28 0:06 ` しらいしななこ
2008-06-28 22:32 ` しらいしななこ
2008-06-29 8:56 ` Junio C Hamano
2008-06-25 22:44 ` Petr Baudis
2008-06-26 1:59 ` Johannes Schindelin
2008-06-25 20:09 ` Junio C Hamano
2008-06-26 11:55 ` Björn Steinbrink
2008-06-26 12:07 ` Johannes Schindelin
2008-06-26 12:35 ` Björn Steinbrink
2008-06-26 15:55 ` Avery Pennarun
2008-06-26 17:49 ` Johannes Schindelin
2008-06-26 12:01 ` Matthieu Moy
2008-06-26 12:09 ` Johannes Schindelin
2008-06-26 12:23 ` David Kastrup
2008-06-25 13:19 ` Ian Hilt
2008-06-26 5:31 ` Andreas Ericsson
2008-06-26 16:15 ` Jon Loeliger
2008-06-25 5:29 ` Johannes Gilger
2008-06-24 20:04 ` why is git destructive by default? (i suggest it not be!) David Jeske
2008-06-25 8:57 ` Boaz Harrosh
2008-06-24 18:18 ` Brandon Casey
2008-06-24 1:47 ` David Jeske
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5V7wbFEDjCX7V@videotron.ca>
[not found] ` <willow-jeske-01l5cKsCFEDjC=91MX@videotron.ca>
2008-06-24 2:17 ` Nicolas Pitre
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5ciVtFEDjCaD9>
2008-06-24 3:18 ` David Jeske
2008-06-24 8:14 ` Lea Wiemann
2008-06-24 3:18 ` David Jeske
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5ciVtFEDjCaD9@videotron.ca>
[not found] ` <willow-jeske-01l5e9cgFEDjCh3F@videotron.ca>
2008-06-24 4:03 ` Nicolas Pitre
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5fAcTFEDjCWA4>
2008-06-24 4:40 ` David Jeske
2008-06-24 5:24 ` Jan Krüger
2008-06-24 4:40 ` David Jeske
[not found] ` <1978205964779154253@unknownmsgid>
2008-06-24 5:20 ` Avery Pennarun
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5gtQ7FEDjCWCC>
2008-06-24 6:35 ` David Jeske
2008-06-24 6:35 ` David Jeske
2008-06-24 7:24 ` Jeff King
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5jmMuFEDjChvB>
2008-06-24 7:31 ` David Jeske
2008-06-24 8:16 ` Jeff King
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5kv6TFEDjCj8S>
2008-06-24 8:30 ` David Jeske
2008-06-24 9:39 ` Jakub Narebski
2008-06-24 8:30 ` David Jeske
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5kv6TFEDjCj8S@brm-avmta-1.central.sun.com>
[not found] ` <willow-jeske-01l5lTEoFEDjCVta@brm-avmta-1.central.sun.com>
2008-06-24 10:01 ` Fedor Sergeev
2008-06-24 10:24 ` David Jeske
2008-06-24 13:13 ` Theodore Tso
2008-06-24 7:31 ` David Jeske
2008-06-24 7:54 ` Jakub Narebski
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5kQf4FEDjCXUa>
2008-06-24 8:08 ` David Jeske
2008-06-24 8:08 ` David Jeske
2008-06-24 11:22 ` Jakub Narebski
[not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5p7eVFEDjCZRD>
2008-06-24 11:29 ` David Jeske
2008-06-24 12:21 ` Jakub Narebski
2008-06-24 11:29 ` David Jeske
2008-06-24 12:19 ` Rogan Dawes
2008-06-24 12:35 ` Johannes Gilger
2008-06-24 12:46 ` Rogan Dawes
2008-06-24 12:13 ` Jakub Narebski
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=7vskv1xkq9.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=apenwarr@gmail.com \
--cc=bharrosh@panasas.com \
--cc=git@vger.kernel.org \
--cc=j.sixt@viscovery.net \
--cc=jeske@google.com \
--cc=stevenrwalter@gmail.com \
--cc=tytso@mit.edu \
/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).