The regexp on the right hand side of expr : operator somehow was broken. expr 'z+pu:refs/tags/ko-pu' : 'z\+\(.*\)' does not strip '+'; write 'z+\(.*\)' instead. We probably should switch to shell based substring post 1.3.0; that's not bashism but just POSIX anyway. Signed-off-by: Junio C Hamano <junkio@xxxxxxx> --- * Funny thing is that before the z prefixing, the code was already broken (we said expr "$ref" : '\+\(.*\)'), but somehow it worked. It could be a bug in expr. # already buggy but did not trigger somehow. : siamese; expr '+pu:ko-pu' : '\+\(.*\)' pu:ko-pu # z prefix exposed the breakage. : siamese; expr 'z+pu:ko-pu' : 'z\+\(.*\)' +pu:ko-pu # the fix-up this patch is about. : siamese; expr 'z+pu:ko-pu' : 'z+\(.*\)' pu:ko-pu # this is the way it should have been written from the start. : siamese; expr '+pu:ko-pu' : '+\(.*\)' pu:ko-pu # maybe I am using broken expr... : siamese; type expr expr is hashed (/usr/bin/expr) : siamese; /usr/bin/expr --version |head -n2 expr (GNU coreutils) 5.94 Copyright (C) 2006 Free Software Foundation, Inc. git-fetch.sh | 4 ++-- git-parse-remote.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) dfdcb558ecf93c0e09b8dab89cff4839e8c95e36 diff --git a/git-fetch.sh b/git-fetch.sh index 711650f..83143f8 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -252,10 +252,10 @@ fetch_main () { else not_for_merge= fi - if expr "z$ref" : 'z\+' >/dev/null + if expr "z$ref" : 'z+' >/dev/null then single_force=t - ref=$(expr "z$ref" : 'z\+\(.*\)') + ref=$(expr "z$ref" : 'z+\(.*\)') else single_force= fi diff --git a/git-parse-remote.sh b/git-parse-remote.sh index 65c66d5..c9b899e 100755 --- a/git-parse-remote.sh +++ b/git-parse-remote.sh @@ -77,7 +77,7 @@ canon_refs_list_for_fetch () { force= case "$ref" in +*) - ref=$(expr "z$ref" : 'z\+\(.*\)') + ref=$(expr "z$ref" : 'z+\(.*\)') force=+ ;; esac -- 1.3.0.rc3.gce03 - : 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