diff options
author | Michael Schubert <mschub@elegosoft.com> | 2013-07-13 11:36:24 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-07-18 15:59:46 -0700 |
commit | 737c5a9cde708d6995c765b7c2e95033edd0a896 (patch) | |
tree | 46ce1379e667a81503b19b7a3e6785396ae42dec /remote.c | |
parent | edca4152560522a431a51fc0a06147fc680b5b18 (diff) | |
download | git-737c5a9cde708d6995c765b7c2e95033edd0a896.tar.gz |
fetch: make --prune configurablems/fetch-prune-configuration
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.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -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)) |