git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Buglet] "git show <random-40-hexdigit>" gives an unclear error message
@ 2011-03-11 18:28 Junio C Hamano
  2011-03-14 15:11 ` [PATCH] revision.c: Clarify error message for missing objects Jakob Pfender
  0 siblings, 1 reply; 3+ messages in thread
From: Junio C Hamano @ 2011-03-11 18:28 UTC (permalink / raw)
  To: git

Here is one who wants to tackle potentially a low-hanging fruit.

  $ git cat-file -p 4cd96ce446ab653325a0e47fad73e94c99c57dd2
  error: unable to find 4cd96ce446ab653325a0e47fad73e94c99c57dd2
  fatal: Not a valid object name 4cd96ce446ab653325a0e47fad73e94c99c57dd2

This looks sensible and understandable, even though you could argue that
we don't have to say the same thing twice.  In the same repository:

  $ git show 4cd96ce446ab653325a0e47fad73e94c99c57dd3
  fatal: bad object 4cd96ce446ab653325a0e47fad73e94c99c57dd3

This is bad, as it sounds as if we found the named object but it is
corrupt.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH] revision.c: Clarify error message for missing objects
  2011-03-11 18:28 [Buglet] "git show <random-40-hexdigit>" gives an unclear error message Junio C Hamano
@ 2011-03-14 15:11 ` Jakob Pfender
  2011-03-14 17:40   ` Junio C Hamano
  0 siblings, 1 reply; 3+ messages in thread
From: Jakob Pfender @ 2011-03-14 15:11 UTC (permalink / raw)
  To: git

[Sorry Junio, accidentally sent this to just you the first time around]

If "git show" is invoked on a hash for a file that doesn't exist, the
produced error message was "fatal: bad object <hash>". This is
misleading as the object isn't bad, but missing. As a matter of fact, if
an object is bad, this error message is never produced, because
parse_object() terminates with its own error message if the object is
corrupt.

This patch introduces a check to see whether an object exists (with the
appropriate error message if it doesn't) and removes the unnecessary and
misleading original error message if parse_object() fails.

Signed-off-by: Jakob Pfender <jpfender@elegosoft.com>
---
  revision.c |    4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/revision.c b/revision.c
index 86d2470..085aac2 100644
--- a/revision.c
+++ b/revision.c
@@ -173,9 +173,9 @@ static struct object *get_reference(struct rev_info 
*revs, const char *name, con
  {
      struct object *object;

+    if (sha1_object_info(sha1, NULL) < 0)
+        die("Not a valid object name %s", name);
      object = parse_object(sha1);
-    if (!object)
-        die("bad object %s", name);
      object->flags |= flags;
      return object;
  }
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] revision.c: Clarify error message for missing objects
  2011-03-14 15:11 ` [PATCH] revision.c: Clarify error message for missing objects Jakob Pfender
@ 2011-03-14 17:40   ` Junio C Hamano
  0 siblings, 0 replies; 3+ messages in thread
From: Junio C Hamano @ 2011-03-14 17:40 UTC (permalink / raw)
  To: Jakob Pfender; +Cc: git, Christian Couder

Jakob Pfender <jpfender@elegosoft.com> writes:

> This patch introduces a check to see whether an object exists (with the
> appropriate error message if it doesn't) and removes the unnecessary and
> misleading original error message if parse_object() fails.

How does this interact with object replacement?

I suspect the real issue is in read_sha1_file_repl() that says:

    /*
     * This function dies on corrupt objects; the callers who want to
     * deal with them should arrange to call read_object() and give error
     * messages themselves.
     */

without giving sufficient support for the callers that wish to use
read_object() themselves to implement the object replacement logic.


> Signed-off-by: Jakob Pfender <jpfender@elegosoft.com>
> ---
>  revision.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/revision.c b/revision.c
> index 86d2470..085aac2 100644
> --- a/revision.c
> +++ b/revision.c
> @@ -173,9 +173,9 @@ static struct object *get_reference(struct
> rev_info *revs, const char *name, con
>  {
>      struct object *object;
>
> +    if (sha1_object_info(sha1, NULL) < 0)
> +        die("Not a valid object name %s", name);
>      object = parse_object(sha1);
> -    if (!object)
> -        die("bad object %s", name);
>      object->flags |= flags;
>      return object;
>  }

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-03-14 17:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-11 18:28 [Buglet] "git show <random-40-hexdigit>" gives an unclear error message Junio C Hamano
2011-03-14 15:11 ` [PATCH] revision.c: Clarify error message for missing objects Jakob Pfender
2011-03-14 17:40   ` Junio C Hamano

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