我有一个大约一个月前建立的SVN存储库,经过一些挣扎之后,我得到了一个后提交钩子,用于更新开发服务器上我的网站的一个工作副本。它工作了几天,然后,昨天突然停了下来。
我正在网络上的服务器上运行VisualSVN服务器。据我所知,web服务器或承载VisualSVN服务器的服务器上没有任何变化。过去几天,VisualSVN服务器没有在事件查看器中显示任何事件,因此我无法查看是否存在错误,也无法找到任何特定于SVN的日志文件。当我运行'svn日志‘时,它只显示提交。如果有错误的话,我不确定是否会出现错误。
下面是正在运行的脚本的擦拭副本:
@ECHO OFF
setlocal enableDelayedExpansion
svnlook dirs-changed %1 -r %2 | findstr /b /i "trunk"
IF %ERRORLEVEL% EQU 0 (
FOR /F "tokens=2" %%a IN ('svnlook changed %1 -r %2') DO (
SET NEWA=%%a
SET "NEWB=!NEWA:trunk/=!"
svn update \\<server-name>\<share>\dev\<working-copy-directory>\!NEWB! --username <svnuser> --password <svnpass>)
)
endlocal我还检查了服务器上的任何锁,没有发现任何锁,并在我的DEV服务器上运行了工作副本的清理,但都没有效果。我还尝试从另一个工作站进行更新,只是看看它是否是我的本地机器,但它仍然不能正常运行。最后,我还尝试从命令行运行脚本,它运行并更新工作副本。实际上,似乎服务器只是没有运行它。
任何调试此问题的帮助都是非常感谢的。
更新:在找到一些调试策略之后,我能够确认钩子确实是通过包含如下命令来运行的:
echo hook ran at %date% %time% >> debug.txt这记录了提交,就像预期的那样。我还包括了类似的调试代码,以确保钩子捕获了正确的主干/分支,并且我还让它在更新之前记录目录,这样我就可以运行该命令了。所有的一切都是这样。然后,为了记录服务器响应,我将更新代码更改为:
svn update \\<server-name>\<share>\dev\<working-copy-directory>\!NEWB! --username <svnuser> --password <svnpass> >> debug.txt)这根本不返回任何信息。我对此完全不知所措。
更新2:我在测试这个问题时没有得到这个信息,但是现在当我自己运行命令时.
svn update \\<server>\<share>\dev\<working-copy>\ScriptContent\test.cfm --username <svnuser> --password它返回"svn: E020024:错误解决大小写“,并吐出我刚才给它的路径。
我确实尝试过搜索这个问题的一些来源,但我唯一发现的是用斜杠切换反斜杠,但它返回完全相同的错误,但斜杠切换回反斜杠。
更新3:为了检查错误是否与作为网络服务运行的服务器有关,并试图通过UNC路径访问工作副本,我试图将服务更改为以我的名字运行,映射网络驱动器,并在脚本中使用此映射驱动器。这个测试没有给出错误,但没有执行更新。
而且,我越仔细考虑,上面更新2中从命令行获得的错误可能不是脚本运行时发生的错误,因为客户机端的提交屏幕(由TortoiseSVN运行)将显示错误。它不会显示任何错误。
这就是我所知道的。
我完全不知所措。
发布于 2013-11-07 13:58:25
经过几天的斗争,我终于找到了解决办法。默认情况下,VisualSVN服务器运行在网络服务用户帐户上。为了解决这个问题,我遵循了以下步骤。
在那之后它起作用了。钩子正在文件上运行SVN更新,与预期完全相同,并使用提交的更改更新web服务器的副本。我希望这也是对其他人的帮助,因为要想解决这个问题需要做很多工作。
发布于 2013-11-07 16:40:54
你做的事很不安全!不要向管理员组添加服务帐户。
据我现在所见,的根本原因是对共享上的工作副本的访问不足。
您必须向VisualSVN服务器的服务帐户提供对共享的访问权限。(NTFS和共享权限)。默认情况下,VisualSVN服务器的服务在“网络服务”帐户下运行。此帐户标识为网络上的计算机帐户。因此,您必须向计算机帐户提供对工作副本所在的共享的访问权限。如果您仍然打算在专用帐户下运行服务器:文章http://www.visualsvn.com/support/topic/00024/必须阅读!
https://stackoverflow.com/questions/19792730
复制相似问题