SVN提交后错过$ REPOS和$ REV

时间:2013-11-30 10:51:51

标签: svn post-commit post-commit-hook

我的SVN post-commit钩子出了问题。 钩本身工作正常。

我添加了:

echo "REPOS: $REPOS Rev: $REV" >>/tmp/mylog.txt

..当我使用shell作为www-data运行它时,一切正常,输出为:

REPOS: /var/local/svn/svn_project Rev: 624

但是当SVN自动调用钩子时,挂钩正在执行,输出为:

REPOS:  Rev: 

结果是,我的钩子文件中的update-command也不起作用..:/

有人知道问题出在哪里吗? 为什么没有设置$ REPOS和$ REV?

1 个答案:

答案 0 :(得分:1)

  

为什么$REPOS$REV未设置?

因为您需要在脚本中设置它们。见this article

  

使用有序参数调用钩子   每种情况下的第一个是$REPOS(存储库的路径),然后第二个参数在每种情况下都不同:

  • start-commit$USER(尝试提交的用户)
  • pre-commit$TXN-NAME(即将提交的事务的名称。默认情况下,这是从当前版本的编号生成的。)
  • post-commit$REV(刚刚提交的修订号)。
  

虽然这些是默认参数和它们的标准名称,但是在设置它们之前,脚本当然不会知道参数名称!它们只是作为有序参数传递(例如,在bash中$1$2)。
  最好在脚本开头设置适当的命名变量,当然在调用任何其他脚本之前,以避免不必要地混淆自己。例如,在sh:

中使用post-commit脚本
#!/bin/sh

REPOS="$1"
REV="$2"

SCRIPT="/home/username/svn/repository/hooks/script.pl"

"$SCRIPT" "$REPOS" "$REV" thirdarg || exit 1