Quoting r. Junio C Hamano <junkio@xxxxxxx>: > > At least, fix the error message? > > That would touch the same vicinity of code so if I were to do > that myself I would rather see if the restriction can be > loosened properly first. The following seems to fix this issue: simply scan the full refspec list for each remote instead of breaking on the first match. I had to touch the git-fetch.sh script as well as it is scanning the remote list, too. Works for me. --- Fix git fetch for when multiple refspecs reference the same remote head. Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxxxxxx> diff --git a/Makefile b/Makefile diff --git a/connect.c b/connect.c index 4422a0d..3880191 100644 --- a/connect.c +++ b/connect.c @@ -115,6 +115,7 @@ int get_ack(int fd, unsigned char *resul int path_match(const char *path, int nr, char **match) { int i; + int found = 0; int pathlen = strlen(path); for (i = 0; i < nr; i++) { @@ -128,9 +129,9 @@ int path_match(const char *path, int nr, if (pathlen > len && path[pathlen - len - 1] != '/') continue; *s = 0; - return (i + 1); + found = i + 1; } - return 0; + return found; } struct refspec { diff --git a/fetch-pack.c b/fetch-pack.c diff --git a/git-fetch.sh b/git-fetch.sh index c2eebee..c35bae6 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -373,26 +373,22 @@ fetch_main () { +$remote_name:*) single_force=t not_for_merge= - found="$ref" - break ;; + found="$ref";; .+$remote_name:*) single_force=t not_for_merge=t - found="$ref" - break ;; + found="$ref";; .$remote_name:*) not_for_merge=t - found="$ref" - break ;; + found="$ref";; $remote_name:*) not_for_merge= - found="$ref" - break ;; + found="$ref";; esac - done - local_name=$(expr "z$found" : 'z[^:]*:\(.*\)') - append_fetch_head "$sha1" "$remote" \ + local_name=$(expr "z$found" : 'z[^:]*:\(.*\)') + append_fetch_head "$sha1" "$remote" \ "$remote_name" "$remote_nick" "$local_name" "$not_for_merge" + done done ) || exit ;; esac -- MST - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html