Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows SVN提交后钩子批处理窗口_Windows_Batch File_Svn_Visualsvn Server_Post Commit Hook - Fatal编程技术网

Windows SVN提交后钩子批处理窗口

Windows SVN提交后钩子批处理窗口,windows,batch-file,svn,visualsvn-server,post-commit-hook,Windows,Batch File,Svn,Visualsvn Server,Post Commit Hook,我有一个运行Visual SVN Server的Windows服务器来存储我们的存储库。 服务器上还有我们的测试副本 我正在尝试设置一个简单的SVN post commit钩子,以便在每次我提交某个内容时自动更新该测试副本 在visualsvn中的post-commit钩子中,我像这样设置 "C:\Program Files (x86)\VisualSVN Server\bin\updatescripts.bat" D:\inetpub\TESTCOPY PATH=%PATH%;"C:\Pro

我有一个运行Visual SVN Server的Windows服务器来存储我们的存储库。 服务器上还有我们的测试副本

我正在尝试设置一个简单的SVN post commit钩子,以便在每次我提交某个内容时自动更新该测试副本

在visualsvn中的post-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
然后该批处理文件有一个简单的更新,如下所示

"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更新提交后钩子吗

谢谢
Fede

我也遇到了类似的问题,结果证明SVN喜欢使用前斜杠而不是反斜杠的路径

试试这个:

set MYPATH=%1

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

svn update %MYPATH%

在尝试了一百万件不同的事情后,这对我来说很有效

我把这个放在我的帖子里 “C:\Program Files\VisualSVN Server\bin\svn.exe”更新“C:\my path\” 其中“我的路径”是要更新的工作副本的路径


此外,我还必须将服务更改为作为本地系统运行

您正在运行
svn update
命令。您要更新的工作副本到底是什么

传递的参数是存储库的路径。这并不指向工作目录,而是指向包含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才能将提示控制权返回给用户。

这确实不是您想要的方式。您应该做的是使用类似于监视存储库的东西。Jenkins可以监视您的存储库,并在它发生变化时监视它,更新您的测试副本,启动构建,运行自动测试,等等。

抱歉,但仍然是一样的,它冻结并锁定了我的测试副本。我正在尝试同样的事情,我尝试在钩子本身内执行所有操作,但没有成功,然后找到了这种方法。我得到了奇怪的结果,最终它不会更新,但是当我双击批处理文件时它就工作了。当我在post-commit钩子中更改批处理文件的名称时,会出现一个错误,表示找不到该文件。看来钩子可以找到文件,但不能执行它?我不知道,但这是我所拥有的。在提交后钩子中,批处理文件:cd“C:/mypath/myrepository/file.bat”中的“C:/working path/myrepository”svn update any any see?安装VisuaSVN服务器时,会添加%VISUALSVN_Server%环境变量。检查一下,本地系统?为什么?使用默认网络服务,并向其提供访问“C:\my path”的权限。我使用网络服务时遇到权限问题…可能取决于特定安装的配置,只是想提醒一下,万一有人遇到类似的权限问题。