diff options
author | Carlos Martín Nieto <cmn@elego.de> | 2011-10-15 07:04:25 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-10-15 21:56:13 -0700 |
commit | ed43de6ec35dfd4c4bd33ae9b5f2ebe38282209f (patch) | |
tree | 941a49f45a789b247840f52e74183a52a066500b /builtin/remote.c | |
parent | c500352e0de75db34b1a071a9e250b815d10f95b (diff) | |
download | git-ed43de6ec35dfd4c4bd33ae9b5f2ebe38282209f.tar.gz |
fetch: honor the user-provided refspecs when pruning refs
If the user gave us refspecs on the command line, we should use those
when deciding whether to prune a ref instead of relying on the
refspecs in the config.
Previously, running
git fetch --prune origin refs/heads/master:refs/remotes/origin/master
would delete every other ref under the origin namespace because we
were using the refspec to filter the available refs but using the
configured refspec to figure out if a ref had been deleted on the
remote. This is clearly the wrong thing to do.
Change prune_refs and get_stale_heads to simply accept a list of
references and a list of refspecs. The caller of either function needs
to decide what refspecs should be used to decide whether a ref is
stale.
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/remote.c')
-rw-r--r-- | builtin/remote.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/builtin/remote.c b/builtin/remote.c index f2a9c26dc3..de52367927 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -349,7 +349,8 @@ static int get_ref_states(const struct ref *remote_refs, struct ref_states *stat else string_list_append(&states->tracked, abbrev_branch(ref->name)); } - stale_refs = get_stale_heads(states->remote, fetch_map); + stale_refs = get_stale_heads(states->remote->fetch, + states->remote->fetch_refspec_nr, fetch_map); for (ref = stale_refs; ref; ref = ref->next) { struct string_list_item *item = string_list_append(&states->stale, abbrev_branch(ref->name)); |