3

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

我正在尝试设置一个简单的 SVN 提交后挂钩,以便每次我提交某些内容时它都会自动更新该测试副本

在提交后挂钩的 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 服务作为网络服务运行,并且此帐户对服务器上的 bin 文件夹和测试副本具有完全访问权限。

知道如何设置一个简单的 svn update post commit hook 吗?

谢谢费德

4

4 回答 4

1

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

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

于 2013-06-25T18:49:55.467 回答
1

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

尝试这个:

set MYPATH=%1

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

svn update %MYPATH%
于 2012-04-12T13:48:49.813 回答
0

在尝试了一百万种不同的东西之后,这对我有用......

我把它放在我的提交后挂钩 "C:\Program Files\VisualSVN Server\bin\svn.exe" update "C:\my path\" 其中我的路径是要更新的工作副本的路径

我还必须更改服务以作为本地系统运行

于 2013-02-13T18:43:04.647 回答
0

真的不是你想要的方式。你应该做的是使用像Jenkins这样的东西来监视你的存储库。Jenkins 可以监视您的存储库,并在它发生更改时更新您的测试副本、启动构建、运行自动化测试等。

于 2014-04-25T15:29:18.793 回答