如果检查更改,有些脚本将无法正常工作。
我试过这样:
VN=$(git describe --abbrev=7 HEAD 2>/dev/null) git update-index -q --refresh CHANGED=$(git diff-index --name-only HEAD --) if [ ! -z $CHANGED ]; then VN="$VN-mod" fi
是否有某种布尔检查自上次提交以来是否有更改,或者我如何才能真正测试我的本地存储库是否有新更改?
我正在为版本创建脚本(我在这里的某个地方找到)做这一切。
你所做的几乎可以工作:你应该引用$CHANGED以防它是空的,并-z测试空的,这意味着没有变化。你的意思是:
$CHANGED
-z
if [ -n "$CHANGED" ]; then VN="$VN-mod" fi
来自 Git 的引用GIT-VERSION-GEN:
GIT-VERSION-GEN
git update-index -q --refresh test -z "$(git diff-index --name-only HEAD --)" || VN="$VN-dirty"
看起来你在复制那个,但你只是忘记了引用的细节。
当然,你也可以这样做:
if git diff-index --quiet HEAD --; then # No changes else # Changes fi
或者,如果您只关心“发生了变化”的情况:
if ! git diff-index --quiet HEAD --; then VN="$VN-mod" fi
使用--quiet的好处是 Git 可以在遇到单个差异时立即停止处理,因此它可能不必检查整个工作树。
--quiet