【问题标题】:win apache svn post-commit update hangswin apache svn 提交后更新挂起
【发布时间】:2013-03-14 10:12:37
【问题描述】:

我正在使用 svn apache 模块来管理我在网络服务器上的存储库,并使用 tartoise svn 与之交互。

我想在我提交某些内容时自动更新服务器上的工作副本,这样我就不必在服务器上手动操作远程桌面并手动运行更新。

为此,我在 repo 上创建了一个简单的提交后挂钩

echo %username% >> C:\debug.txt
svn update F:\wampserver64\www\netcity\maintenance\ >> C:\debug.txt

问题是我不能再对 repo 提交任何更改。提交在达到 100% 后挂起,确定按钮显示为灰色。之后提交的文件在客户端和服务器上都处于锁定状态,我必须在两个站上手动清理和更新。 echo %username% 用于调试目的。我怀疑这可能是权限问题,所以我将用户名 svn 运行为。这是输出:

XIBM$ 
Updating 'F:\wampserver64\www\netcity\maintenance':

XIBM$ 甚至不是用户名。它是服务器的名称。如果手动运行,.bat 挂钩运行正常并返回合理的输出:

liviu.gelea 
Updating 'F:\wampserver64\www\netcity\maintenance':
At revision 19.

我尝试为 XIBM/用户、经过身份验证的用户、管理员、来宾以及服务器上移动的几乎所有内容设置完全权限,但没有成功。因此,我们非常感谢任何帮助。

【问题讨论】:

  • debug.txt的内容是什么?
  • 最后 2 个灰色框代表 debug.txt 作为 hook 和手动运行。

标签: windows svn post-commit


【解决方案1】:

正如我多次提到的,不要使用提交后脚本来执行此操作。在该提交后脚本运行时,用户被锁定并等待该提交完成。在此期间,他们对自己的计算机、Subversion 和您感到愤怒。

相反,使用像Jenkins 这样的持续集成引擎来处理这个问题。 Jenkins 设置简单,并且会消除提交后脚本的痛苦。

另外,Jenkins 可以保留所有提交的完整历史记录,以及服务器更新发生的情况,如果出现问题,可以通过电子邮件发送给您。更好的是,您可以使用类似 Promote Build 插件来挑选您真正想要部署到服务器的提交。

【讨论】:

  • 感谢您的建议,但我们确实只有 2 个用户,提交非常罕见。尽管如此,由于服务器是 windows 并且我们没有 ssh 访问权限,只有远程桌面才能通过远程桌面登录来进行更新。
【解决方案2】:

svn 运行的帐户是什么?我会推荐一些东西

  1. 在更新中指定 --username,您可能不想添加运行 svn 的本地服务帐户以访问 repo
  2. 添加--accept theirs-full 以在发生冲突时始终获取服务器副本
  3. 一旦您拨入,您可能也会想要--quiet

【讨论】:

  • 抱歉,回答延迟。日志应该包含完整的用户名,但只包含服务器名称和“$”:XIBM$ 我正在尽快尝试您的建议。 (明天:))
猜你喜欢
  • 2015-05-19
  • 2012-10-18
  • 2012-11-19
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
相关资源
最近更新 更多