git - 使用 git 的 Shell 脚本 self 更新

标签 git bash shell

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

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

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

最佳答案

这是我想出的脚本:

#!/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

关于git - 使用 git 的 Shell 脚本 self 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35365799/

相关文章:

git - 如何将最新的更改从 dev 分支带到我当前的分支

git - 使用 git 查找特定代码部分随时间的变化

git - 还原 git 上次提交并将其保存在不同的分支中

linux - 列与制表符而不是空格对齐

linux - 为什么我在执行 1 个 fork 时会得到 2 个进程?

shell - 使用 shell 命令作为 INSTALL_COMMAND 到 ExternalProject_Add

git 将分支内容复制到master

linux - 显示不同行为的 Shell 命令..在终端与运行脚本中

swift - 使用参数从 swift 应用程序调用 shell

mysql - 如何使用shell脚本访问mysql数据库?