2012-04-12 106 views
3

我有一个Windows服务器运行Visual SVN服务器来存储我们的存储库。 在该服务器上也是我们的测试副本。SVN后提交挂钩批处理窗口

我试图建立一个简单的SVN post-commit钩子所以每次我犯什么

在Visual SVN的时间自动更新测试后复制commit钩子我已经建立了这样的

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

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

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

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

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

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

感谢 菲德

+0

我正在尝试同样的事情,但我没有成功尝试执行钩子本身内的所有操作,然后找到这种方法。我得到奇怪的结果,最终它不会更新,但是当我双击它工作的批处理文件时。当我在post-commit hook中更改批处理文件的名称时,它给我一个错误,说它找不到该文件。所以它似乎钩可以找到该文件,但不执行它?我不知道,但这是我的。 在post-commit钩子: “C:/我的路径/ myrepository/file.bat” 在批处理文件: CD “C:/工作路径/ myrepository” SVN更新 任何人看到任何问题? – mgrenier 2013-02-13 18:16:37

+0

当您安装VisuaSVN服务器时,它会添加%VISUALSVN_SERVER%环境变量。核实。 – bahrep 2013-02-13 19:00:54

回答

1

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

试试这个:

set MYPATH=%1 

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

svn update %MYPATH% 
+0

对不起,但仍然一样,它冻结并锁定我的测试副本。 – 2012-04-13 08:34:08

0

尝试一百万个不同的东西,这个工作对我来说...之后

我把这个在我的post-commit钩子 “C:\ Program Files文件\ VisualSVN服务器\ BIN \ svn.exe”更新‘C:\我的路径\’ 在我的路径是将工作副本更新

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

+0

本地系统?为什么?使用默认的网络服务并为其提供访问'C:\ my path \' – bahrep 2013-02-13 19:02:04

+0

当我使用网络服务时,我有权限问题......可能取决于特定安装的配置,只是想提及任何人遇到类似的权限的问题。 – mgrenier 2013-02-13 19:06:39

1

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

正在传递的参数是存储库的路径。这不是指向一个工作目录,而是指向包含Subversion主存储库的目录。这是你的post commit hook被存储的目录。

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

0

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