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

[PATCH 05/11] Add a library function to add an alternate to the alternates file

From
Daniel Barkalow <barkalow@iabervon.org>
Date
Mar 8, 2008, 23:04 UTC
Message-ID
<alpine.LNX.1.00.0803081804090.19665@iabervon.org>

This is in the core so that, if the alternates file has already been read, the addition can be parsed and put into effect for the current process.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
---
 cache.h     |    1 +
 sha1_file.c |   19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/cache.h b/cache.h
index bdefcc9..6aae174 100644
--- a/cache.h
+++ b/cache.h
@@ -587,6 +587,7 @@ extern struct alternate_object_database {
 	char base[FLEX_ARRAY]; /* more */
 } *alt_odb_list;
 extern void prepare_alt_odb(void);
+extern void add_to_alternates_file(const char *reference);
 
 struct pack_window {
 	struct pack_window *next;
diff --git a/sha1_file.c b/sha1_file.c
index 445a871..4ce4d9d 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -379,6 +379,25 @@ static void read_info_alternates(const char * relative_base, int depth)
 	munmap(map, mapsz);
 }
 
+void add_to_alternates_file(const char *reference)
+{
+	char *file;
+	char *alt;
+	int fd;
+
+	file = mkpath("%s/objects/info/alternates", get_git_dir());
+	fd = open(file, O_CREAT | O_WRONLY | O_APPEND, 0666);
+	if (fd < 0)
+		die("failed to create %s", file);
+	alt = mkpath("%s/objects\n", reference);
+	write_or_die(fd, alt, strlen(alt));
+	if (close(fd))
+		die("could not close %s", file);
+	fprintf(stderr, "Wrote %s to %s\n", alt, file);
+	if (alt_odb_tail)
+		link_alt_odb_entries(alt, alt + strlen(alt), '\n', NULL, 0);
+}
+
 void prepare_alt_odb(void)
 {
 	const char *alt;
-- 
1.5.4.3.327.g614d7.dirty
Next: Johannes Schindelin
Message 1 of 3 in “Add a library function to add an alternate to the alternates file”
  1. 05/11 Add a library function to add an alternate to the alternates fileDaniel Barkalow, Mar 8, 2008
  2. Johannes SchindelinMar 8, 2008
  3. Daniel BarkalowMar 8, 2008

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.