我有一台运行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
答案 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可以监视您的存储库,它可以在更改时更新,更新测试副本,启动构建,运行自动化测试等。