Commit 6d20006f7e8dbc26cf07bf8a945bc6972642c303

Carlos Martín Nieto 2014-11-02T20:11:54

remote: check the relevance of the refspec when updating FETCH_HEAD Before trying to rtransform using the given refspec to figure out what the name of the upstream branch is on the remote, we must make sure that the target of the refspec applies to the current branch's upstream.

1
2
3
4
5
6
7
8
9
10
11
12
diff --git a/src/remote.c b/src/remote.c
index 0ae377e..477a884 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -983,6 +983,7 @@ static int remote_head_for_ref(git_remote_head **out, git_remote *remote, git_re
 	    (error = git_config_get_string(&branch_remote, config, git_buf_cstr(&config_key))) < 0 ||
 	    git__strcmp(git_remote_name(remote), branch_remote) ||
 	    (error = git_branch_upstream_name(&upstream_name, repo, ref_name)) < 0 ||
+	    !git_refspec_dst_matches(spec, git_buf_cstr(&upstream_name)) ||
 	    (error = git_refspec_rtransform(&remote_name, spec, upstream_name.ptr)) < 0) {
 		/* Not an error if there is no upstream */
 		if (error == GIT_ENOTFOUND)