From: Felipe Contreras Date: Tue, 07 May 2013 22:13:19 GMT Subject: Re: [PATCH v2 1/3] fast-{import,export}: use get_sha1_hex() directly Message-ID: In-Reply-To: <7v38tyn9cq.fsf@alter.siamese.dyndns.org> On Tue, May 7, 2013 at 9:38 AM, Junio C Hamano wrote: > Felipe Contreras writes: > >> It's wrong to call get_sha1() if they should be SHA-1s, plus >> inefficient. >> >> Signed-off-by: Felipe Contreras >> --- > > It appears that "they should be SHA-1s" assumption does not hold; > this patch breaks at least 3303, 9020, and 9300. > > Also assuming these are always 40-hex goes directly against what is > documented in Documentation/git-fast-import.txt (look for "Here > committish is any of the following"). My bad while reviewing the > earlier round. > > I've redone 'pu' (which was failing the test last night) after > dropping this and keeping only patches 2 and 3 from the series. Turns out most of the get_sha1() calls were correct; this does the trick: diff --git a/builtin/fast-export.c b/builtin/fast-export.c index 18fdfb3..d1d68e9 100644 --- a/builtin/fast-export.c +++ b/builtin/fast-export.c @@ -623,7 +623,7 @@ static void import_marks(char *input_file) mark = strtoumax(line + 1, &mark_end, 10); if (!mark || mark_end == line + 1 - || *mark_end != ' ' || get_sha1(mark_end + 1, sha1)) + || *mark_end != ' ' || get_sha1_hex(mark_end + 1, sha1)) die("corrupt mark line: %s", line); if (last_idnum < mark) diff --git a/fast-import.c b/fast-import.c index 5f539d7..3f32149 100644 --- a/fast-import.c +++ b/fast-import.c @@ -1822,7 +1822,7 @@ static void read_marks(void) *end = 0; mark = strtoumax(line + 1, &end, 10); if (!mark || end == line + 1 - || *end != ' ' || get_sha1(end + 1, sha1)) + || *end != ' ' || get_sha1_hex(end + 1, sha1)) die("corrupt mark line: %s", line); e = find_object(sha1); if (!e) { -- Felipe Contreras