Shell脚本使用git自我更新

时间:2016-02-12 15:05:05

标签: git bash shell

我在编写端到端测试之前编写脚本来执行任务。其中一个步骤是选择编写这些测试的分支。有时脚本会在不同的分支之间发生变化,所以我需要脚本在实际执行之前自行更新。

我的git存储库中的bash脚本是否可以自行更新并仅执行新版本?

总结:当我执行script.sh时,我希望它检查git是否有新版本可用,如果有,请下载此新版本并在旧版本完全死亡时执行它。

1 个答案:

答案 0 :(得分:6)

这是我提出的脚本:

#!/bin/bash

SCRIPT=$(readlink -f "$0")
SCRIPTPATH=$(dirname "$SCRIPT")
SCRIPTNAME="$0"
ARGS="$@"
BRANCH="Your_git_branch"

self_update() {
    cd $SCRIPTPATH
    git fetch

    [ -n $(git diff --name-only origin/$BRANCH | grep $SCRIPTNAME) ] && {
        echo "Found a new version of me, updating myself..."
        git pull --force
        git checkout $BRANCH
        git pull --force
        echo "Running the new version..."
        exec "$SCRIPTNAME" "$@"

        # Now exit this old instance
        exit 1
    }
    echo "Already the latest version."
}

main() {
   echo "Running"
}

self_update
main