Subversion挂钩是否适用于文件URL?

时间:2011-02-08 15:32:39

标签: windows svn svn-hooks

我正在尝试测试一些Subversion提交挂钩,但是当我使用最简单的情况 - 本地存储库和file://协议 - 那么钩子不会被执行。

我在Windows上 - 这是一个简化示例的成绩单:

C:\>mkdir \testsvn    
C:\>mkdir \testsvn\repos    
C:\>cd \testsvn\repos    
C:\testsvn\repos>svnadmin create --fs-type fsfs /testsvn/repos    
C:\testsvn\repos>cd \testsvn    
C:\testsvn>mkdir source    
C:\testsvn>cd source    
C:\testsvn\source>echo This is a readme file.>readme.txt    
C:\testsvn\source>svn import file:///testsvn/repos/somemodule -m "Imported somemodule"
Adding         readme.txt    
Committed revision 1.

C:\testsvn\source>cd \testsvn\repos\hooks    
C:\testsvn\repos\hooks>copy con pre-commit.bat
echo Commits disabled! 1>&2
exit /b 1
^Z
        1 file(s) copied.

C:\testsvn\repos\hooks>md \testsvn\checkout    
C:\testsvn\repos\hooks>cd \testsvn\checkout    
C:\testsvn\checkout>svn checkout file:///testsvn/repos/somemodule
A    somemodule\readme.txt
Checked out revision 1.

C:\testsvn\checkout>cd somemodule    
C:\testsvn\checkout\somemodule>echo This is line 2 of the readme file.>>readme.txt    
C:\testsvn\checkout\somemodule>svn status -u
M                1   readme.txt
Status against revision:      1

C:\testsvn\checkout\somemodule>svn commit -m "This should fail if the pre-commit hook works..."
Sending        readme.txt
Transmitting file data .
Committed revision 2.

由于我的极端提交挂钩,最后一个命令应该失败。我做错了什么?

2 个答案:

答案 0 :(得分:1)

原来是我的错误 - 在批处理文件中,“exit 1”向svn返回错误,而“exit / b 1”则没有。

答案 1 :(得分:0)

这是一个愚蠢的答案,但您是否验证了预提交挂钩的权限?它在任何其他条件下都有效吗?

您可能没有文件URL的问题,一般情况下您可能会遇到问题。