我有一个运行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的东西来观看你的仓库。 詹金斯可以看你的版本库,当它发生变化时,更新你的测试副本,启动构建,运行自动化测试等。