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>
This commit is contained in:

committed by
Junio C Hamano

parent
c500352e0d
commit
ed43de6ec3
2
remote.h
2
remote.h
@ -164,6 +164,6 @@ struct ref *guess_remote_head(const struct ref *head,
|
||||
int all);
|
||||
|
||||
/* Return refs which no longer exist on remote */
|
||||
struct ref *get_stale_heads(struct remote *remote, struct ref *fetch_map);
|
||||
struct ref *get_stale_heads(struct refspec *refs, int ref_count, struct ref *fetch_map);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user