SVN Post Commit Hook Batch Windows

时间:2012-04-12 09:58:32

标签: windows batch-file svn visualsvn-server post-commit-hook

我有一台运行Visual SVN Server的Windows Server来存储我们的存储库。 该服务器上还有我们的测试副本。

我正在尝试设置一个简单的SVN post-commit挂钩,以便每次提交时自动更新该测试副本

在提交后挂钩中的Visual SVN中,我设置了这样的

"C:\Program Files (x86)\VisualSVN Server\bin\updatescripts.bat" D:\inetpub\TESTCOPY

然后该批处理文件有一个像这样的简单更新

PATH=%PATH%;"C:\Program Files (x86)\VisualSVN Server\bin\"
svn update %1

如果我通过双击它或从命令行运行服务器中的批处理文件工作正常。 当从我的笔记本电脑上提交某些内容时,它会冻结并且不会给我任何错误并锁定测试副本,因此我需要进入并进行清理。

Visual SVN服务作为网络服务运行,此aacount可以完全访问服务器上的bin文件夹和测试副本。

任何想法如何设置一个简单的svn更新post post hook any?

由于 FEDE

4 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,结果证明SVN喜欢使用正斜杠而不是反斜杠的路径。

试试这个:

set MYPATH=%1

:: Transform backslashes to forward slashes
set MYPATH=%MYPATH:^\=/%

svn update %MYPATH%

答案 1 :(得分:1)

您正在运行svn update命令。您正在尝试更新哪些工作副本?

传递的参数是 存储库的路径 。这不是指向工作目录,而是指向包含Subversion主存储库的目录。这与存储post post钩子的目录相同。

Subversion挂钩无权访问用户的工作目录,因此您无法操纵用户的文件。钩子脚本通常应该使用svnlook而不是svn。通过这样做,您可以防止自己遇到任何麻烦。

如果您知道位置:

,则可以在服务器上更新Subversion工作副本
PATH=%PATH%;"C:\Program Files (x86)\VisualSVN Server\bin\"
set SVN_WORK_DIR=C:\SVN\workdir"
svn update %SVN_WORK_DIR%

但是,我不推荐这个,因为它绑定了Subversion。执行提交的用户必须等到更新完成,然后Subversion才会将提示控件返回给用户。

答案 2 :(得分:0)

尝试了一百万种不同的东西后,这对我有用......

我把它放在我的post-commit钩子里 “C:\ Program Files \ VisualSVN Server \ bin \ svn.exe”更新“C:\ my path \” 其中我的路径是要更新的工作副本的路径

此外,我必须将服务更改为以本地系统

运行

答案 3 :(得分:0)

真的不是你想要的那种方式。你应该做的是使用类似Jenkins的东西来观察你的存储库。 Jenkins可以监视您的存储库,它可以在更改时更新,更新测试副本,启动构建,运行自动化测试等。