Thread (13 messages) flat view 13 messages, 4 authors, 2016-06-15

Re: [PATCH] fetch-pack: fix object_id of exact sha1

From: Junio C Hamano <hidden>
Date: 2016-06-15 23:08:32

Possibly related (same subject, not in this thread)

Gabriel Souza Franco [off-list ref] writes:
quoted
quoted
      struct object_id oid;

-     if (!get_oid_hex(name, &oid) && name[GIT_SHA1_HEXSZ] == ' ')
-             name += GIT_SHA1_HEXSZ + 1;
-     else
+     if (get_oid_hex(name, &oid))
              oidclr(&oid);
+     else if (name[GIT_SHA1_HEXSZ] == ' ')
+             name += GIT_SHA1_HEXSZ + 1;
This makes sense to me. I wonder if we should be more particular about
the pure-sha1 case consuming the whole string, though. E.g., if we get:

  1234567890123456789012345678901234567890-bananas

that should probably not have sha1 1234...

I don't think it should ever really happen in practice, but it might be
worth noticing and complaining when name[GIT_SHA1_HEXSZ] is neither
space nor '\0'.
Right. What kind of complaining? Is doing oidclr(&oid) and letting it
fail elsewhere enough?
I think that is the most sensible.  After all, the first get-oid-hex
expects to find a valid 40-hex object name at the beginning of line,
and oidclr() is the way for it to signal a broken input, which is
how the callers of this codepath expects errors to be caught.

Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help