Re: [PATCH] cherry-pick: better error message when the parameter is a non-commit

2013-04-08 Thread Junio C Hamano
Miklos Vajna  writes:

> When copy&paste goes wrong, and the user e.g. tries to cherry-pick a
> blob, the error message used to be:

It is the other way around.  When the user tries to cherry-pick a
non-commit we say a correct but nonspecific "expected one commit",
and it does not matter how the user threw a non-commit at us.  One
possibility could be copy&paste going wrong.

>   fatal: BUG: expected exactly one commit from walk
>
> Instead, now it is:
>
>   fatal: Can't cherry-pick a blob

I wonder what we would do when "git cherry-pick master: next"
is given.  That is not "single commit input" case and not covered by
this patch, but perhaps something we may want to diagnose?

In other words, perhaps we would want to inspect pending objects
before running prepare_revision_walk and make sure everybody is
commit-ish or something?

>
> Signed-off-by: Miklos Vajna 
> ---
>  sequencer.c | 9 -
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/sequencer.c b/sequencer.c
> index baa0310..0ac00d4 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -1082,8 +1082,15 @@ int sequencer_pick_revisions(struct replay_opts *opts)
>   if (prepare_revision_walk(opts->revs))
>   die(_("revision walk setup failed"));
>   cmit = get_revision(opts->revs);
> - if (!cmit || get_revision(opts->revs))
> + if (!cmit || get_revision(opts->revs)) {
> + unsigned char sha1[20];
> + if (!get_sha1(opts->revs->cmdline.rev->name, sha1)) {
> + enum object_type type = sha1_object_info(sha1, 
> NULL);
> + if (type > 0 && type != OBJ_COMMIT)
> + die(_("Can't cherry-pick a %s"), 
> typename(type));
> + }
>   die("BUG: expected exactly one commit from walk");
> + }
>   return single_pick(cmit, opts);
>   }
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] cherry-pick: better error message when the parameter is a non-commit

2013-04-08 Thread Junio C Hamano
Miklos Vajna  writes:

> On Wed, Apr 03, 2013 at 11:27:04AM +0200, Miklos Vajna  
> wrote:
>> When copy&paste goes wrong, and the user e.g. tries to cherry-pick a
>> blob, the error message used to be:
>> 
>>  fatal: BUG: expected exactly one commit from walk
>> 
>> Instead, now it is:
>> 
>>  fatal: Can't cherry-pick a blob
>> 
>> Signed-off-by: Miklos Vajna 
>> ---
>>  sequencer.c | 9 -
>>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> Ping, any comment on this patch?

Nothing in particular from me.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] cherry-pick: better error message when the parameter is a non-commit

2013-04-08 Thread Miklos Vajna
Hi,

On Wed, Apr 03, 2013 at 11:27:04AM +0200, Miklos Vajna  wrote:
> When copy&paste goes wrong, and the user e.g. tries to cherry-pick a
> blob, the error message used to be:
> 
>   fatal: BUG: expected exactly one commit from walk
> 
> Instead, now it is:
> 
>   fatal: Can't cherry-pick a blob
> 
> Signed-off-by: Miklos Vajna 
> ---
>  sequencer.c | 9 -
>  1 file changed, 8 insertions(+), 1 deletion(-)

Ping, any comment on this patch?

Thanks,

Miklos
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] cherry-pick: better error message when the parameter is a non-commit

2013-04-03 Thread Miklos Vajna
When copy&paste goes wrong, and the user e.g. tries to cherry-pick a
blob, the error message used to be:

fatal: BUG: expected exactly one commit from walk

Instead, now it is:

fatal: Can't cherry-pick a blob

Signed-off-by: Miklos Vajna 
---
 sequencer.c | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/sequencer.c b/sequencer.c
index baa0310..0ac00d4 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -1082,8 +1082,15 @@ int sequencer_pick_revisions(struct replay_opts *opts)
if (prepare_revision_walk(opts->revs))
die(_("revision walk setup failed"));
cmit = get_revision(opts->revs);
-   if (!cmit || get_revision(opts->revs))
+   if (!cmit || get_revision(opts->revs)) {
+   unsigned char sha1[20];
+   if (!get_sha1(opts->revs->cmdline.rev->name, sha1)) {
+   enum object_type type = sha1_object_info(sha1, 
NULL);
+   if (type > 0 && type != OBJ_COMMIT)
+   die(_("Can't cherry-pick a %s"), 
typename(type));
+   }
die("BUG: expected exactly one commit from walk");
+   }
return single_pick(cmit, opts);
}
 
-- 
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html