我正在尝试编写一个SVN后提交钩子,奇怪的是,挂在什么应该是最简单的部分。
剧本:
#!/usr/bin/sh set REPO="$1" set REV="$2" set SVNBIN="/opt/CollabNet_Subversion/bin/" set SSHBIN="/usr/bin/ssh" set HOST="staging.domain.net" set timeout=30 set USERNAME="svn-usr" set E_NO_CONNECT=2 set E_WRONG_PASS=3 set E_UNKOWN=25 set CHANGED=`"$SVNBIN"svnlook changed --revision $REV $REPOS` echo "Here are changes: $CHANGED" >> /var/svn/repos/www/logs/testing echo "Command: $0; Repo: $REPO; Rev: $REV; Total: $#" >> /var/svn/repos/www/logs/testing set PROJECT ""
然而,当我这样称呼它时,似乎没有看到我传递给它的论点:
/var/svn/repos/www/logs> sudo ../hooks/post-commit /var/svn/repos/www 33 svnlook: missing argument: --revision Type 'svnlook help' for usage. /var/svn/repos/www/logs> cat testing Here are changes: Command: ../hooks/post-commit; Repo: ; Rev: ; Total: 1
这是在Solaris 10 SPARC盒子上。
我是一个脚本新手,但这不是很容易?
set不会做你认为它做的事:它修改位置参数$1 , $2 ,… $@等,它不分配variables。
set REPO="$1" set REV="$2"
应该:
REPO="$1" REV="$2"
(等等)
我不知道为什么你有所有这些set命令,删除它们,看看是否有用?
REPO="$1" REV="$2" SVNBIN="/opt/CollabNet_Subversion/bin/" SSHBIN="/usr/bin/ssh" HOST="staging.domain.net" timeout=30 USERNAME="svn-usr" E_NO_CONNECT=2 E_WRONG_PASS=3 E_UNKOWN=25 CHANGED=`"$SVNBIN"svnlook changed --revision $REV $REPOS` ..... PROJECT=""