加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何编写一个shell脚本来检查git存储库是否是最新的?

发布时间:2020-12-15 18:29:35 所属栏目:安全 来源:网络整理
导读:#!/bin/bash#gedit tidy plugininit=falseSRC_DIR=~/reposDIRECTORY="Gedit-Clientside-Plugin"#making repos directoryif [ ! -d "$SRC_DIR" ]; then mkdir $SRC_DIR; fiif [ ! -d "$SRC_DIR/$DIRECTORY" ]; then init=true cd $SRC_DIR pwd git clone git:
#!/bin/bash
#gedit tidy plugin
init=false
SRC_DIR=~/repos

DIRECTORY="Gedit-Clientside-Plugin"
#making repos directory
if [ ! -d "$SRC_DIR" ]; then mkdir $SRC_DIR; fi



if [ ! -d "$SRC_DIR/$DIRECTORY" ]; then
    init=true
    cd $SRC_DIR && pwd && git clone git://github.com/trentrichardson/Gedit-Clientside-Plugin.git && cd $DIRECTORY
else
    cd $SRC_DIR/$DIRECTORY
fi
#below here is what I'm having trouble with
git pull 1>&1 | grep "Already up-to-date."

if [[ ! $? -eq 0 && ! $init ]]; then
    read -e -p "## Branch moved,build and install Gedit-Clientside-Plugin? [Y/n] " yn
    if [[ $yn == "y" || $yn == "Y" || $yn == "" ]] ; then
        if [ ! -d "/usr/share/gedit/plugins/clientside" ]; then
            sudo cp ~/repos/Gedit-Clientside-Plugin/clientside /usr/share/gedit/plugins/ -r
        else
            echo "Directory already exists."
        fi
    fi
fi

上面的代码是我从stackoverflow上找到的脚本编辑的,用于从git repository安装Emacs.我希望这个脚本做的是从git repos安装任何程序,并在需要更新时更新它们.当然,我必须提供安装它的步骤.在这个脚本的情况下,它只需要将clientside目录复制到/usr/share / gedit / plugins /目录.

我不需要任何有关如何安装任何脚本的帮助,但我需要的是如何检查存储库是否是最新的并从那里开始.

现在我不明白的是这一部分:

git pull 1>&1 | grep "Already up-to-date."

    if [[ ! $? -eq 0 && ! $init ]]; then
.....
    fi

当我运行git pull 1>& 1 |时grep“已经是最新的.” &安培;&安培; $?在终端输出已经是最新的. 0.所以我理解这是检查更新的部分,但下一部分不执行(if语句) – 这是将目录复制到gedit插件目录的部分.我不明白1> 1美元是什么意思或什么是$?手段.因此我无法解决这个问题……我不明白的是为什么它认为Branch在它不是最新时被移动(我只是假设它说当git pull没有返回0时if语句).

我确信它有一个简单的解决方案,答案就是教育bash和git.我感谢所有的帮助.

我正在使用ubuntu 12.04.

我宁愿使用“ git: check if pull needed”的解决方案:
git fetch origin
reslog=$(git log HEAD..origin/master --oneline)
if [[ "${reslog}" != "" ]] ; then
  git merge origin/master # completing the pull
  ...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读