Trac提交后脚本问题(SyntaxError: 无效语法)

1 投票
2 回答
756 浏览
提问于 2025-04-15 17:44

我设置了一个提交后脚本,地址在这里:http://trac.edgewall.org/browser/trunk/contrib/trac-post-commit-hook,目的是把变更集和工单关联起来。

但是当我尝试提交时,出现了以下错误:

'post-commit' 钩子失败,错误信息:
文件 "/var/www/svn/repo/hooks/trac-post-commit-hook",第 101 行
(options, args) = parser.parse_args(sys.argv[1:])
^ 语法错误:无效的语法

我在 CentOS 上运行的是 Python 2.4.3。

我对 Python 不太熟悉,所以不太明白这里发生了什么,而且根据谷歌的搜索,似乎没有人遇到过这个问题。

我希望这里有人能知道发生了什么。

提前谢谢大家。

编辑:

如果有帮助的话,这是我的提交后脚本:

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

LOG='/usr/bin/svnlook log -r $REV $REPOS'
AUTHOR='/usr/bin/svnlook author -r $REV $REPOS'
TRAC_ENV="/var/www/trac/[xxx]/"
TRAC_URL='http://trac.[xxx].com/'


/usr/bin/python /var/www/svn/repo/hooks/trac-post-commit-hook -p "$TRAC_ENV" -r "$REV" -u "$AUTHOR" -m "$LOG" -s "$TRAC_URL"

2 个回答

2

哇,这真奇怪。这行代码肯定是有效的语法,而且Python的版本应该也没问题,因为这个脚本的版权声明和Python 2.4发布的年份是一样的。你电脑上有多个Python的安装吗?如果有的话,可以检查一下/usr/bin/env python是否返回了正确的版本吗?

3

可能在(options,args)前面有空格或制表符?可能是像这样。

>>> (options, args) = parser.parse_args(sys.argv[1:])
>>> # this is fine
>>>
>>>  (options, args) = parser.parse_args(sys.argv[1:])
  File "<stdin>", line 1
    (options, args) = parser.parse_args(sys.argv[1:])
    ^
SyntaxError: invalid syntax
>>>

撰写回答