From: Brian Riehman Date: Wed, 03 Nov 2010 14:05:38 GMT Subject: git stash syntax error under AIX 5.3 Message-ID: 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