summaryrefslogtreecommitdiff
path: root/remote.c
diff options
context:
space:
mode:
authorMichael Schubert <mschub@elegosoft.com>2013-07-13 09:36:24 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-07-18 22:59:46 (GMT)
commit737c5a9cde708d6995c765b7c2e95033edd0a896 (patch)
tree46ce1379e667a81503b19b7a3e6785396ae42dec /remote.c
parentedca4152560522a431a51fc0a06147fc680b5b18 (diff)
downloadgit-737c5a9cde708d6995c765b7c2e95033edd0a896.zip
git-737c5a9cde708d6995c765b7c2e95033edd0a896.tar.gz
git-737c5a9cde708d6995c765b7c2e95033edd0a896.tar.bz2
fetch: make --prune configurable
Without "git fetch --prune", remote-tracking branches for a branch the other side already has removed will stay forever. Some people want to always run "git fetch --prune". To accommodate users who want to either prune always or when fetching from a particular remote, add two new configuration variables "fetch.prune" and "remote.<name>.prune": - "fetch.prune" allows to enable prune for all fetch operations. - "remote.<name>.prune" allows to change the behaviour per remote. The latter will naturally override the former, and the --[no-]prune option from the command line will override the configured default. Since --prune is a potentially destructive operation (Git doesn't keep reflogs for deleted references yet), we don't want to prune without users consent, so this configuration will not be on by default. Helped-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Michael Schubert <mschub@elegosoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'remote.c')
-rw-r--r--remote.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/remote.c b/remote.c
index 68eb99b..89be211 100644
--- a/remote.c
+++ b/remote.c
@@ -148,6 +148,7 @@ static struct remote *make_remote(const char *name, int len)
}
ret = xcalloc(1, sizeof(struct remote));
+ ret->prune = -1; /* unspecified */
ALLOC_GROW(remotes, remotes_nr + 1, remotes_alloc);
remotes[remotes_nr++] = ret;
if (len)
@@ -419,6 +420,8 @@ static int handle_config(const char *key, const char *value, void *cb)
remote->skip_default_update = git_config_bool(key, value);
else if (!strcmp(subkey, ".skipfetchall"))
remote->skip_default_update = git_config_bool(key, value);
+ else if (!strcmp(subkey, ".prune"))
+ remote->prune = git_config_bool(key, value);
else if (!strcmp(subkey, ".url")) {
const char *v;
if (git_config_string(&v, key, value))