win apache svn post-commit update挂起

时间:2013-03-14 10:12:38

标签: windows svn post-commit

我正在使用svn apache模块来管理我在网络服务器上的回购,并使用tartoise svn与它进行交互。

我想在每次提交时自动更新服务器上的工作副本,以便我不必在服务器上手动安装远程桌面并手动运行更新。

为此我在repo上创建了一个简单的post-commit钩子

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

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

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

XIBM $甚至不是用户名。它是服务器的名称。如果运行manualy,.bat挂钩运行正常并返回一个可执行的输出:

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

我尝试为XIBM /用户,身份验证用户,管理员,访客以及在服务器上移动但几乎没有运气的所有内容设置完全权限。所以任何帮助都是非常苛刻的。

2 个答案:

答案 0 :(得分:2)

正如我多次提到的,不要使用post-commit脚本执行此操作。当该提交后脚本正在运行时,用户被锁定并等待该提交完成。在这段时间里,他们对他们的电脑,Subversion和你感到生气。

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

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

答案 1 :(得分:1)

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

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