The stash command relies on bash-specific shell scripting techniques when the shebang line lists Bourne shell. This was introduced in b0f0ecd97924ee775e7f3b29366133448f4f8e15. The error was noticed when running under AIX 5.3: $ /bin/sh -n git-stash.sh git-stash.sh[63]: syntax error at line 498 : `"' unmatched $ /bin/sh -n git-stash-modified.sh $ diff git-stash.sh git-stash-modified.sh 314,321c314,321 < if test "${REV}" != "${REV%{*\}}" < then < # maintainers: it would be better if git rev-parse indicated < # this condition with a non-zero status code but as of 1.7.2.1 it < # it did not. So, we use non-empty stderr output as a proxy for the < # condition of interest. < test -z "$(git rev-parse "$REV" 2>&1 >/dev/null)" || die "$REV does not exist in the stash log" < fi --- > # if test "${REV}" != "${REV%{*\}}" > # then > # # maintainers: it would be better if git rev-parse indicated > # # this condition with a non-zero status code but as of 1.7.2.1 it > # # it did not. So, we use non-empty stderr output as a proxy for the > # # condition of interest. > # test -z "$(git rev-parse "$REV" 2>&1 >/dev/null)" || die "$REV does not exist in the stash log" > # fi $ head -1 git-stash.sh #!/bin/sh Removing the code from that commit causes the stash command to work properly. I am not sure if other systems have /bin/sh symbolically linked to /bin/bash, but in AIX the /bin/sh fails to properly parse the default git-stash.sh. I am not sure how to correct this logic since Bourne shell does not have an equally powerful search and replace variable substitution operator nor do I know exactly what this is meant to filter out of the variable. For now, I have simply patched the source to comment out those lines. Brian Riehman -- To unsubscribe from this list: 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