好吧,在这里我的观点,我有一个svn的工作副本在服务器上必须保持最新。所以我设置了一个cronjob来经常更新svn。我的脚本只是在特定的时间间隔内进行svn更新。我尝试在svn服务器上使用post-commit钩子脚本,但没有成功。Subversion概念:svn更新或svn信息
无论如何,我的老板要求我修改脚本来制作一个svn信息,并将当前的rev与工作副本的rev进行比较,然后如果有变化,则触发更新。 他认为在svn服务器上的服务器负载将少于在同一时间间隔进行更新。我的心意是svn update在更新之前肯定会做比较但是版本。
我在做svn info脚本时没有任何问题,但我不认为它会改变任何东西。
我在寻找关于svn更新的信息,以及它的功能,但没有找到有用的东西。
编辑:@Wrikken和@Ben,首先让我澄清我的environement。 我的svn环境仅在局域网中,所以我们使用svn协议(svn://)。我的svn服务器是一个Ubuntu服务器,我的客户端是一个debian服务器。我已经有了hookscript配置和工作在我的svn服务器上与第三个服务器同步,这是我的svn服务器的一个镜像。我的svn服务器与用户svn一起工作。我的钩子脚本和我的脚本是由同一个用户(svn)拥有的。这是我提交后的脚本(svnsync的命令做工精细) #!/ bin/sh的
REPOS="$1"
REV="$2"
ME=`whoami`
echo "post-commit $REPOS $REV user: $ME " >> /var/log/svnsync.log
# non interactive:
/usr/bin/svnsync sync --non-interactive svn://path/to/mirror/repository --username "user" --password "######" >> /var/log/svnsync.log 2>&1
/path/to/script/script.sh >> /var/log/svnimpact.log 2>&1
现在我在这里的脚本,连和我的第二台服务器上更新的工作副本(它只是一个SVN客户端不一个SVN服务器)
#! /bin/sh
/usr/bin/sshpass -p "######" /usr/bin/ssh [email protected] 'svn update /path/to/working/copy'
执行只与运行SVN服务器(SVN同一用户的更新脚本做工精细) 但它从来没有在commit完成执行。 我有点迷路了。
'svn info'然后'svn update'在服务器上较重,然后只是一个'svn update',如果没有什么需要更新的话,那真的没什么用处。我很好奇你使用post-commit钩子遇到了什么问题,在这里完美的工作来触发构建...... – Wrikken
@Wrikken Finaly我们发现我们的问题。 svn用户从来没有在该服务器上连接过ssh。所以,通过sshpass命令,它被赋予了您信任该计算机的问题的密码。所以命令永远不能正常工作。我们将post-commit改为使用ssh键,而所有的东西都开始工作了,它应该是 – bl00d666