git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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);
>  

  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).