threads / patch / 13165

patch, 8 partsAdd a library function to add an alternate to the alternates file

Subject: [PATCH 3/8] Add a library function to add an alternate to the alternates file

## tl;dr

One message between Apr 17, 2008 and Apr 17, 2008. Diffs are folded; open one to read it.

replies: 0people: 1as markdown or json

Daniel Barkalow· Apr 17, 2008, 23:32 UTC · lore

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 |   12 ++++++++++++
 2 files changed, 13 insertions(+), 0 deletions(-)
Show changes to 2 files +13 −0

cache.h, sha1_file.c

diff --git a/cache.h b/cache.h
index 4a113b0..96dcb49 100644
--- a/cache.h
+++ b/cache.h
@@ -589,6 +589,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..1aa3cef 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -379,6 +379,18 @@ static void read_info_alternates(const char * relative_base, int depth)
 	munmap(map, mapsz);
 }
 
+void add_to_alternates_file(const char *reference)
+{
+	struct lock_file *lock = xcalloc(1, sizeof(struct lock_file));
+	int fd = hold_lock_file_for_append(lock, git_path("objects/info/alternates"), 1);
+	char *alt = mkpath("%s/objects\n", reference);
+	write_or_die(fd, alt, strlen(alt));
+	if (commit_lock_file(lock))
+		die("could not close alternates 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.610.gea6cd

← back to recent threads