[PATCH] fix sha1_pack_index_name()

Subsystems: the rest

DORMANTno replies

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

[PATCH] fix sha1_pack_index_name()

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:44:39

An earlier commit 633f43e (Remove redundant code, eliminate one static
variable, 2008-05-24) had a thinko (perhaps an eyeno) that broke
sha1_pack_index_name() function.  One symptom of this was that the http
walker is now completely broken.

This should fix it.

Signed-off-by: Junio C Hamano <redacted>
---
 sha1_file.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/sha1_file.c b/sha1_file.c
index 9679040..adcf37c 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -177,7 +177,7 @@ char *sha1_file_name(const unsigned char *sha1)
 }
 
 static char *sha1_get_pack_name(const unsigned char *sha1,
-				char **name, char **base)
+				char **name, char **base, const char *which)
 {
 	static const char hex[] = "0123456789abcdef";
 	char *buf;
@@ -187,7 +187,8 @@ static char *sha1_get_pack_name(const unsigned char *sha1,
 		const char *sha1_file_directory = get_object_directory();
 		int len = strlen(sha1_file_directory);
 		*base = xmalloc(len + 60);
-		sprintf(*base, "%s/pack/pack-1234567890123456789012345678901234567890.pack", sha1_file_directory);
+		sprintf(*base, "%s/pack/pack-1234567890123456789012345678901234567890.%s",
+			sha1_file_directory, which);
 		*name = *base + len + 11;
 	}
 
@@ -206,14 +207,14 @@ char *sha1_pack_name(const unsigned char *sha1)
 {
 	static char *name, *base;
 
-	return sha1_get_pack_name(sha1, &name, &base);
+	return sha1_get_pack_name(sha1, &name, &base, "pack");
 }
 
 char *sha1_pack_index_name(const unsigned char *sha1)
 {
 	static char *name, *base;
 
-	return sha1_get_pack_name(sha1, &name, &base);
+	return sha1_get_pack_name(sha1, &name, &base, "idx");
 }
 
 struct alternate_object_database *alt_odb_list;

Re: [PATCH] fix sha1_pack_index_name()

From: Gustaf Hendeby <hidden>
Date: 2016-06-15 22:44:39

On 05/28/2008 06:47 PM, Junio C Hamano wrote:
An earlier commit 633f43e (Remove redundant code, eliminate one static
variable, 2008-05-24) had a thinko (perhaps an eyeno) that broke
sha1_pack_index_name() function.  One symptom of this was that the http
walker is now completely broken.

This should fix it.

Signed-off-by: Junio C Hamano <redacted>
This did - applied on top of next - not fix my problem but changed the 
error message somewhat:

$ git version
git version 1.5.6.rc0.141.g55e0e
$ git fetch origin
Getting alternates list for http://repo.or.cz/r/git-homepage.git
Getting pack list for http://repo.or.cz/r/git-homepage.git
error: Unable to find 50819d376acb03429ab2628ef3d07893c7f0e22c under 
http://repo.or.cz/r/git-homepage.git
Cannot obtain needed object 50819d376acb03429ab2628ef3d07893c7f0e22c
fatal: Fetch failed.

/Gustaf
quoted hunk
---
 sha1_file.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/sha1_file.c b/sha1_file.c
index 9679040..adcf37c 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -177,7 +177,7 @@ char *sha1_file_name(const unsigned char *sha1)
 }
 
 static char *sha1_get_pack_name(const unsigned char *sha1,
-				char **name, char **base)
+				char **name, char **base, const char *which)
 {
 	static const char hex[] = "0123456789abcdef";
 	char *buf;
@@ -187,7 +187,8 @@ static char *sha1_get_pack_name(const unsigned char *sha1,
 		const char *sha1_file_directory = get_object_directory();
 		int len = strlen(sha1_file_directory);
 		*base = xmalloc(len + 60);
-		sprintf(*base, "%s/pack/pack-1234567890123456789012345678901234567890.pack", sha1_file_directory);
+		sprintf(*base, "%s/pack/pack-1234567890123456789012345678901234567890.%s",
+			sha1_file_directory, which);
 		*name = *base + len + 11;
 	}
 
@@ -206,14 +207,14 @@ char *sha1_pack_name(const unsigned char *sha1)
 {
 	static char *name, *base;
 
-	return sha1_get_pack_name(sha1, &name, &base);
+	return sha1_get_pack_name(sha1, &name, &base, "pack");
 }
 
 char *sha1_pack_index_name(const unsigned char *sha1)
 {
 	static char *name, *base;
 
-	return sha1_get_pack_name(sha1, &name, &base);
+	return sha1_get_pack_name(sha1, &name, &base, "idx");
 }
 
 struct alternate_object_database *alt_odb_list;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help