如何让 svn 每分钟查找一次是否有更新以及是否有调用某些脚本?

如何让 svn 每分钟查找一次是否有更新以及是否有调用某些脚本?

我想知道是否有可能创建这样的 .sh 脚本,让普通用户能够以类似的方式启动nohup ./superScript.sh >& /dev/null &,每分钟查看一次 SVN,找出当前版本,并查看是否有更新运行命令,如下:

kill `ps aux | grep -F 'ServerAPP' | grep -v -F 'grep' | awk '{ print $2 }'` 
./server_automated_net_setup.sh
cd server/install-dir/
export LD_LIBRARY_PATH=./:~/server/install-dir/lib_boost:~/server/install-dir/lib_openSSL
nohup ./ServerAPP >& /dev/null &

这将终止当前正在运行的应用程序,运行我们在用户家中已有的一些自动更新脚本,~然后再次运行它。

是否可以创建这样的脚本以及如何创建?

答案1

该脚本看起来是这样的:

#! /bin/bash

REMOTE_REPO="svn://path/to/remote/repo"
LOCAL_REPO="/path/to/local/repo"

REMOTE_REV=`svn info $REMOTE_REPO | grep '^Revision:' | awk '{print $2}'`
LOCAL_REV=`svn info $LOCAL_REPO | grep '^Revision:' | awk '{print $2}'`

if [ $REMOTE_REV -eq $LOCAL_REV ]; then
    exit 0;
else
    # Run your commands here.
    cd $LOCAL_REPO
    svn up
fi

此脚本仅比较本地和远程 svn 存储库的当前修订号。如果不同,则运行一些命令。如果它们相同,则它存在。

然后你只需要设置一个计划任务按照您想要的频率运行。

答案2

如果你可以访问 svn 服务器,那么更好的方法是定义svn 后提交.这样你就可以避免轮询

我们到了吗?我们到了吗?我们到了吗?- 看看这有多烦人?

优点钩子过度轮询:

  • 您会立即知道(而不是延迟 1 分钟),因为您告诉 svn 当任何内容发生变化时通知您。
  • 你不会浪费你的资源去提问,也不会浪费服务器的资源去回答

相关内容