make 'git add' a first class user friendly interface to the index
[gitweb.git] / git-parse-remote.sh
index e281b7c6ebd5515d74201869574eed6077f37c9d..da064a53f666db52ce2341132a117355ad74d2a1 100755 (executable)
@@ -99,25 +99,29 @@ get_remote_default_refs_for_push () {
 expand_refs_wildcard () {
        for ref
        do
+               lref=${ref#'+'}
                # a non glob pattern is given back as-is.
-               expr "z$ref" : 'zrefs/.*/\*:refs/.*/\*$' >/dev/null || {
+               expr "z$lref" : 'zrefs/.*/\*:refs/.*/\*$' >/dev/null || {
                        echo "$ref"
                        continue
                }
-               from=`expr "z$ref" : 'z\(refs/.*/\)\*:refs/.*/\*$'`
-               to=`expr "z$ref" : 'zrefs/.*/\*:\(refs/.*/\)\*$'`
+
+               from=`expr "z$lref" : 'z\(refs/.*/\)\*:refs/.*/\*$'`
+               to=`expr "z$lref" : 'zrefs/.*/\*:\(refs/.*/\)\*$'`
+               local_force=
+               test "z$lref" = "z$ref" || local_force='+'
                echo "$ls_remote_result" |
                (
                        IFS='   '
                        while read sha1 name
                        do
                                mapped=${name#"$from"}
-                               if test "z$name" != "z${name#'^{}'}" ||
+                               if test "z$name" != "z${name%'^{}'}" ||
                                        test "z$name" = "z$mapped"
                                then
                                        continue
                                fi
-                               echo "${name}:${to}${mapped}"
+                               echo "${local_force}${name}:${to}${mapped}"
                        done
                )
        done