[PATCH] Fix handling of not_for_merge '.' flag in refspec.

From: Tom Prince <tom.prince@ualberta.net>
Date: 2005-09-30 09:53:09
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.html
Received on Fri Sep 30 09:53:54 2005

This archive was generated by hypermail 2.1.8 : 2005-09-30 09:53:57 EST