[PATCH] Allow "+remote:local" refspec to cause --force when fetching.

With this we could say:

    Pull: master:ko-master +pu:ko-pu

to mean "fast forward ko-master with master, overwrite ko-pu with pu",
and the latter one does not require the remote "pu" to be descendant
of local "ko-pu".

Signed-off-by: Junio C Hamano <junkio@cox.net>
diff --git a/git-parse-remote-script b/git-parse-remote-script
index 2da7ae8..cf37884 100755
--- a/git-parse-remote-script
+++ b/git-parse-remote-script
@@ -5,7 +5,7 @@
 get_data_source () {
 	case "$1" in
 	*/*)
-		# Not so fast.  This could be the partial URL shorthand...
+		# Not so fast.	This could be the partial URL shorthand...
 		token=$(expr "$1" : '\([^/]*\)/')
 		remainder=$(expr "$1" : '[^/]*/\(.*\)')
 		if test -f "$GIT_DIR/branches/$token"
@@ -69,6 +69,13 @@
 canon_refs_list_for_fetch () {
 	for ref
 	do
+		force=
+		case "$ref" in
+		+*)
+			ref=$(expr "$ref" : '\+\(.*\)')
+			force=+
+			;;
+		esac
 		expr "$ref" : '.*:' >/dev/null || ref="${ref}:"
 		remote=$(expr "$ref" : '\([^:]*\):')
 		local=$(expr "$ref" : '[^:]*:\(.*\)')
@@ -80,7 +87,7 @@
 		'') local= ;;
 		*) local="refs/heads/$local" ;;
 		esac
-		echo "${remote}:${local}"
+		echo "${force}${remote}:${local}"
 	done
 }
 
@@ -132,12 +139,12 @@
 		else
 		    case "$ref" in
 		    tag)
-		        tag_just_seen=yes
+			tag_just_seen=yes
 			continue
 			;;
 		    esac
 		fi
-	        canon_refs_list_for_fetch "$ref"
+		canon_refs_list_for_fetch "$ref"
 	    done
 	    ;;
 	esac