summaryrefslogtreecommitdiff
path: root/shallow.c
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2013-12-05 20:02:45 +0700
committerJunio C Hamano <gitster@pobox.com>2013-12-10 16:14:17 -0800
commit069c053222bfc62a6522430a137e9b2c7ff36e4c (patch)
tree6c86c32582176d17f7ddd31ff24f7ced1f890dc0 /shallow.c
parent5dbd767601812209273ae007a97b7c9305dc6cfd (diff)
downloadgit-069c053222bfc62a6522430a137e9b2c7ff36e4c.tar.gz
add GIT_SHALLOW_FILE to propagate --shallow-file to subprocesses
This may be needed when a hook is run after a new shallow pack is received, but .git/shallow is not settled yet. A temporary shallow file to plug all loose ends should be used instead. GIT_SHALLOW_FILE is overriden by --shallow-file. --shallow-file does not work in this case because the hook may spawn many git subprocesses and the launch commands do not have --shallow-file as it's a recent addition. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'shallow.c')
-rw-r--r--shallow.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/shallow.c b/shallow.c
index 52268544fd..ec9179480f 100644
--- a/shallow.c
+++ b/shallow.c
@@ -13,10 +13,12 @@ static int is_shallow = -1;
static struct stat shallow_stat;
static char *alternate_shallow_file;
-void set_alternate_shallow_file(const char *path)
+void set_alternate_shallow_file(const char *path, int override)
{
if (is_shallow != -1)
die("BUG: is_repository_shallow must not be called before set_alternate_shallow_file");
+ if (alternate_shallow_file && !override)
+ return;
free(alternate_shallow_file);
alternate_shallow_file = path ? xstrdup(path) : NULL;
}