[英]SVN Post Commit Hook Batch Windows
我有一台运行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任何人?
谢谢联邦
我遇到了类似的问题,结果证明SVN喜欢使用正斜杠而不是反斜杠的路径。
尝试这个:
set MYPATH=%1
:: Transform backslashes to forward slashes
set MYPATH=%MYPATH:^\=/%
svn update %MYPATH%
您正在运行svn update
命令。 您正在尝试更新的工作副本到底是什么?
传递的参数是Repository的路径 。 这不是指向工作目录,而是指向包含Subversion主存储库的目录。 这是存储post commit钩子的目录。
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才会将提示控件返回给用户。
在尝试了一百万种不同的东西后,这对我有用......
我把它放在我的post-commit钩子“C:\\ Program Files \\ VisualSVN Server \\ bin \\ svn.exe”更新“C:\\ my path \\”,其中我的路径是要更新的工作副本的路径
此外,我不得不将服务更改为本地系统运行
这真的不是你想要那样做的方式。 你应该做的是使用像詹金斯这样的东西来观察你的存储库。 Jenkins可以监视您的存储库,它可以在更改时更新,更新测试副本,启动构建,运行自动化测试等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.