Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Barkalow <barkalow@iabervon.org>2008-04-18 03:32:30 +0400
committerJunio C Hamano <gitster@pobox.com>2008-05-05 04:41:44 +0400
commitbef70b22ba63d71c1ae2e070e64ff9863ea1ad14 (patch)
treec8f02795dc1d86cb5459d034604896d8b3a76ac8
parentea3cd5c7c63fadacd66c364ae4b8c6d01e5809b1 (diff)
Add a library function to add an alternate to the alternates file
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--cache.h1
-rw-r--r--sha1_file.c12
2 files changed, 13 insertions, 0 deletions
diff --git a/cache.h b/cache.h
index 396eabf6ed..9da9179afd 100644
--- a/cache.h
+++ b/cache.h
@@ -599,6 +599,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 3516777bc7..d21e23b464 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -380,6 +380,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;