canon_refs_list_for_fetch did not know about '.', so it mangled any reference with it. Further, it added '.' to any refspec on the command line other than the first. Signed-off-by: Tom Prince <tom.prince@ualberta.net> --- Documentation/pull-fetch-param.txt | 5 +++-- git-parse-remote.sh | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) 446dda983492e3c07dc73b271cb9208a4359a734 diff --git a/Documentation/pull-fetch-param.txt b/Documentation/pull-fetch-param.txt --- a/Documentation/pull-fetch-param.txt +++ b/Documentation/pull-fetch-param.txt @@ -49,7 +49,7 @@ <refspec>:: The canonical format of a <refspec> parameter is - '+?<src>:<dst>'; that is, an optional plus '+', followed + '.?+?<src>:<dst>'; that is, an optional plus '+', followed by the source ref, followed by a colon ':', followed by the destination ref. @@ -68,7 +68,8 @@ ref that matches it is fast forwarded using <src>. Again, if the optional plus '+' is used, the local ref is updated even if it does not result in a fast forward - update. + update. If the optional dot '.' is used, the remote ref + is fetched, but not used for merging. Some short-cut notations are also supported. diff --git a/git-parse-remote.sh b/git-parse-remote.sh --- a/git-parse-remote.sh +++ b/git-parse-remote.sh @@ -72,8 +72,15 @@ canon_refs_list_for_fetch () { dot_prefix= for ref do + not_for_merge= force= case "$ref" in + .*) + ref=$(expr "$ref" : '\.\(.*\)') + not_for_merge=. + ;; + esac + case "$ref" in +*) ref=$(expr "$ref" : '\+\(.*\)') force=+ @@ -94,7 +101,12 @@ canon_refs_list_for_fetch () { heads/* | tags/* ) local="refs/$local" ;; *) local="refs/heads/$local" ;; esac - echo "${dot_prefix}${force}${remote}:${local}" + case "$octopus$not_for_merge" in + '') + not_for_merge=$dot_prefix + ;; + esac + echo "${not_for_merge}${force}${remote}:${local}" dot_prefix=. done } @@ -114,6 +126,7 @@ get_remote_default_refs_for_fetch () { # This prefixes the second and later default refspecs # with a '.', to signal git-fetch to mark them # not-for-merge. + octopus= canon_refs_list_for_fetch $(sed -ne '/^Pull: */{ s///p }' "$GIT_DIR/remotes/$1") @@ -155,6 +168,7 @@ get_remote_refs_for_fetch () { ;; esac fi + octopus=t canon_refs_list_for_fetch "$ref" done ;; - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Fri Sep 30 09:53:54 2005
This archive was generated by hypermail 2.1.8 : 2005-09-30 09:53:57 EST