SVN后提交挂钩批处理窗口

我有一个运行Visual SVN服务器的Windows Server来存储我们的仓库。 在那台服务器上也是我们的testing拷贝。

我试图build立一个简单的SVN后提交钩子,所以它每次我提交时自动更新testing副本

在Visual SVN的后提交钩子,我已经这样设置

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

那么这个batch file就有这样一个简单的更新

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

如果我在服务器上通过双击运行batch file或从命令行工作正常。 当从我的笔记本电脑提交的东西冻结,并没有给我任何错误,并lockingtesting副本,然后我需要进入清理。

Visual SVN服务作为networking服务运行,并且此aacount可以完全访问bin文件夹和服务器上的testing副本。

任何想法如何设置一个简单的SVN更新后提交钩任何人?

感谢Fede

我有一个类似的问题,结果是SVN喜欢使用正斜杠而不是反斜杠的路径。

尝试这个:

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

您正在运行svn update命令。 你想要更新什么工作副本?

传递的参数是Repository的路径 。 这不是指向一个工作目录,而是指向包含Subversion主存储库的目录。 这是你的提交后挂钩存储在同一个目录。

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才能将控制提示返回给用户。

尝试了一百万种不同的东西后,这对我来说…

我把它放在我的后提交挂钩“C:\ Program Files \ VisualSVN server \ bin \ svn.exe”更新“C:\ my path \”,其中我的路径是要更新的工作副本的路径

此外,我不得不改变服务作为本地系统运行

真的不是你想要这样做的方式。 你应该做的就是使用类似Jenkins的东西来观看你的仓库。 詹金斯可以看你的版本库,当它发生变化时,更新你的测试副本,启动构建,运行自动化测试等。