diff --git a/Makefile b/Makefile index bbc1d43..7df7572 100644 --- a/Makefile +++ b/Makefile @@ -18,11 +18,9 @@ install: all cp .version zsh-syntax-highlighting.zsh $(SHARE_DIR) cp COPYING.md README.md changelog.md $(DOC_DIR) sed -e '1s/ .*//' -e '/^\[build-status-[a-z]*\]: /d' < README.md > $(DOC_DIR)/README.md - if [ x"true" = x"`git rev-parse --is-inside-work-tree 2>/dev/null`" ]; then \ - git rev-parse HEAD; \ - else \ - cat .revision-hash; \ - fi > $(SHARE_DIR)/.revision-hash + if prefix=`git rev-parse --show-prefix 2>/dev/null` && [ x"$$prefix" = x ]; then \ + git rev-parse HEAD > $(SHARE_DIR)/.revision-hash; \ + fi : # The [ -e ] check below is to because sh evaluates this with (the moral # equivalent of) NONOMATCH in effect, and highlighters/*.zsh has no matches. diff --git a/changelog.md b/changelog.md index 496b4a8..c9e55fb 100644 --- a/changelog.md +++ b/changelog.md @@ -73,6 +73,9 @@ - Recognize `env` as a precommand (e.g., `env FOO=bar ls`) +- Skip installing .revision-hash if not running `make install` from a git checkout. + [#723] + # Changes in version 0.7.1 - Remove out-of-date information from the 0.7.0 changelog. diff --git a/zsh-syntax-highlighting.zsh b/zsh-syntax-highlighting.zsh index 6c95e8c..a74f766 100644 --- a/zsh-syntax-highlighting.zsh +++ b/zsh-syntax-highlighting.zsh @@ -40,12 +40,14 @@ builtin unalias -m '[^+]*' if true; then # $0 is reliable typeset -g ZSH_HIGHLIGHT_VERSION=$(<"${0:A:h}"/.version) - typeset -g ZSH_HIGHLIGHT_REVISION=$(<"${0:A:h}"/.revision-hash) - if [[ $ZSH_HIGHLIGHT_REVISION == \$Format:* ]]; then - # When running from a source tree without 'make install', $ZSH_HIGHLIGHT_REVISION - # would be set to '$Format:%H$' literally. That's an invalid value, and obtaining - # the valid value (via `git rev-parse HEAD`, as Makefile does) might be costly, so: - ZSH_HIGHLIGHT_REVISION=HEAD + if [[ -f "${0:A:h}"/.revision-hash ]]; then + typeset -g ZSH_HIGHLIGHT_REVISION=$(<"${0:A:h}"/.revision-hash) + if [[ $ZSH_HIGHLIGHT_REVISION == \$Format:* ]]; then + # When running from a source tree without 'make install', $ZSH_HIGHLIGHT_REVISION + # would be set to '$Format:%H$' literally. That's an invalid value, and obtaining + # the valid value (via `git rev-parse HEAD`, as Makefile does) might be costly, so: + ZSH_HIGHLIGHT_REVISION=HEAD + fi fi fi