繁体   English   中英

svn 提交后挂钩:“错误解决案例”和“跳过 \\ip-address\users\myDir”消息

[英]svn post-commit hook : “error resolving case” & “skipped \\ip-address\users\myDir”" messages

我在 windows 上安装了 Collabnet SVN 服务器。 此外,我已经实现了一个提交后挂钩,当我从工作副本“A”提交到存储库时,它应该更新项目的工作副本“B”。 工作副本“B”位于网络驱动器 [H -> \\ip-address\users\myDirB]:

  • 现在,当我在我的 post-commit 钩子中指定下面的代码行并从工作副本“A”提交更改集时:

SET WORKING_COPY=H:/myDirB

我收到错误: svn 提交后挂钩:“错误解决案例”

  • 或者,如果我指定: SET WORKING_COPY=//ip-address/users/myDirB

我得到错误:

“跳过\ip-address\users\myDirB””

我究竟做错了什么? 干杯。

请注意:* Collabnet Subversion 服务器安装在我的 C 上:驱动器

  • 它作为对网络目录具有完全权限的服务帐户运行我想通过提交后挂钩自动更新,即 - \\ip-address\users\myDirB*

  • 我也将路径 \\ip-address\users\myDirB 映射到 H: 驱动器

SET WORKING_COPY=//ip-address/users/myDirB

无法工作,因为 cmd.exe 需要一个普通路径(驱动器号、冒号、相对路径)。 它不能处理其他路径,如 UNC 或 ip 地址。 它必须有一个驱动器号。

SET WORKING_COPY=H:/myDirB

但是这不起作用,因为您将 H: 映射到您登录的用户。 但是钩子脚本是以你的 svn 服务器正在运行的用户身份运行的,即作为服务帐户。 并且服务帐户没有映射H:驱动器。

我建议不要使用提交后挂钩来执行此操作。 正如你所发现的那样,它将永远脆弱而复杂。

您应该设置一个持续集成构建来监控 svn 存储库,然后在需要时部署代码。 将这些问题分开将使您在将来免去麻烦,提供通知团队(IM、email 或仪表板)的简便方法,并在何时/如果希望进行任何自动化测试时为您提供帮助。

我遇到的两个问题是(1)路径和(2)权限。 我们的旧设置包括 Windows 2008 R2 上的 collabnet subversion server 1.5.6 和 apache 2.2(现在是 wandisco 1.7.2 / Z974318ED5C2350408R2.2B)。

最初,我将路径作为映射驱动器,subversion 和 apache 服务作为本地系统帐户运行。 所以,我们有类似的东西:

SET WORKING_COPY=X:\the\path\to\theworkingcopy

通过 CLI 运行它很好,但是通过后续钩子提交和执行会导致日志消息如

Error resolving case of 'X:\the\path\to\theworkingcopy'

因此,我将 WORKING_COPY 更改为使用 UNC 路径,例如:

\\servername\DRIVELETTER$\the\path\to\theworkingcopy

仍然是同样的问题,但我认为服务(两者)需要以网络权限运行,所以我将服务“登录为”更改为 svn 服务器和 apache 的域帐户。

我遇到的另一个问题是为服务的“登录身份”用户设置域。 我使用了域用户,但对域使用了通配符,例如“.\theuser”

然后它就起作用了。

至于这是一个脆弱的解决方案,我同意 CI 是 go 的更好方法。 尽管我们在 UNC 上的 svn 更新已 (1) 记录在案并且 (2) 现在可以工作并且 (3) 它在不久的将来不太可能改变 - 正如 kbb 所指出的 - 它并没有分离关注点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM