Thread (10 messages) flat view 10 messages, 3 authors, 2016-06-15

Re: [PATCH v2 1/3] fast-{import,export}: use get_sha1_hex() directly

From: Felipe Contreras <hidden>
Date: 2016-06-15 22:57:10
Subsystem: the rest · Maintainer: Linus Torvalds

On Tue, May 7, 2013 at 9:38 AM, Junio C Hamano [off-list ref] wrote:
Felipe Contreras [off-list ref] writes:
quoted
It's wrong to call get_sha1() if they should be SHA-1s, plus
inefficient.

Signed-off-by: Felipe Contreras <redacted>
---
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help