git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Use LF and allow comments in objects/info/alternates file.

From
Junio C Hamano <junkio@cox.net>
Date
Aug 17, 2005, 05:48 UTC
Message-ID
<7vbr3x2jwo.fsf_-_@assigned-by-dhcp.cox.net>
In-Reply-To
<7vacjhaa7y.fsf@assigned-by-dhcp.cox.net>

Yes, using the same format for the file and the environment variable was a big mistake. This uses LF as the path separator, and allows lines that begin with '#' to be comments. ':' is no longer a separator in objects/info/alternates file.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
 sha1_file.c |   26 +++++++++++++++-----------
 1 files changed, 15 insertions(+), 11 deletions(-)
9577e7e3db2299febdc17539478bba38874d4120
diff --git a/sha1_file.c b/sha1_file.c
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -240,14 +240,21 @@ static struct alternate_object_database 
  * SHA1, an extra slash for the first level indirection, and the
  * terminating NUL.
  */
-static void link_alt_odb_entries(const char *alt, const char *ep)
+static void link_alt_odb_entries(const char *alt, const char *ep, int sep)
 {
 	const char *cp, *last;
 	struct alternate_object_database *ent;
 
 	last = alt;
-	do {
-		for (cp = last; cp < ep && *cp != ':'; cp++)
+	while (last < ep) {
+		cp = last;
+		if (cp < ep && *cp == '#') {
+			while (cp < ep && *cp != sep)
+				cp++;
+			last = cp + 1;
+			continue;
+		}
+		for ( ; cp < ep && *cp != sep; cp++)
 			;
 		if (last != cp) {
 			/* 43 = 40-byte + 2 '/' + terminating NUL */
@@ -264,16 +271,16 @@ static void link_alt_odb_entries(const c
 			ent->base[pfxlen] = ent->base[pfxlen + 3] = '/';
 			ent->base[entlen-1] = 0;
 		}
-		while (cp < ep && *cp == ':')
+		while (cp < ep && *cp == sep)
 			cp++;
 		last = cp;
-	} while (cp < ep);
+	}
 }
 
 void prepare_alt_odb(void)
 {
 	char path[PATH_MAX];
-	char *map, *ep;
+	char *map;
 	int fd;
 	struct stat st;
 	char *alt = gitenv(ALTERNATE_DB_ENVIRONMENT) ? : "";
@@ -282,7 +289,7 @@ void prepare_alt_odb(void)
 	if (alt_odb_tail)
 		return;
 	alt_odb_tail = &alt_odb_list;
-	link_alt_odb_entries(alt, alt + strlen(alt));
+	link_alt_odb_entries(alt, alt + strlen(alt), ':');
 
 	fd = open(path, O_RDONLY);
 	if (fd < 0)
@@ -296,10 +303,7 @@ void prepare_alt_odb(void)
 	if (map == MAP_FAILED)
 		return;
 
-	/* Remove the trailing newline */
-	for (ep = map + st.st_size - 1; map < ep && ep[-1] == '\n'; ep--)
-		;
-	link_alt_odb_entries(map, ep);
+	link_alt_odb_entries(map, map + st.st_size, '\n');
 	munmap(map, st.st_size);
 }
 
Previous: Junio C HamanoNext: Junio C Hamano
Message 10 of 12 in “Alternate object pool mechanism updates.”
  1. Alternate object pool mechanism updates.Junio C Hamano, Aug 13, 2005
  2. Petr BaudisAug 13, 2005
  3. Junio C HamanoAug 13, 2005
  4. Junio C HamanoAug 14, 2005
  5. Linus TorvaldsAug 15, 2005
  6. Junio C HamanoAug 15, 2005
  7. Linus TorvaldsAug 16, 2005
  8. Daniel BarkalowAug 16, 2005
  9. Junio C HamanoAug 16, 2005
  10. Use LF and allow comments in objects/info/alternates file.Junio C Hamano, Aug 17, 2005
  11. Junio C HamanoAug 16, 2005
  12. Linus TorvaldsAug 16, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.