2013-03-14 59 views
1

我使用svn apache模块来管理web服务器上的我的回购站和tartoise svn与它进行交互。win apache svn post-commit更新挂起

我想在服务器上自动更新服务器上的工作副本,这样我就不必在服务器上手动指定远程桌面并手动运行更新了。

对于我创建了一个简单的post-commit钩子在回购

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

问题是,我可以不再承诺回购的任何变化。 Commit达到100%后挂起,OK按钮变灰。之后,提交的文件在客户端和服务器都处于锁定状态,我必须在两个站点上清理并更新manualy。 echo%username%用于调试目的。我怀疑这可能是一个权限问题,所以我eched用户名svn运行。这是输出:

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

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

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

我试过设置全权限XIBM /用户,用户authentificated,管理员,来宾和虚拟服务器上移动的一切,但没有运气。所以任何帮助都非常令人满意。

+0

debug.txt的内容是什么? – thekbb 2013-03-17 16:55:10

+0

最后2个灰色框表示debug.txt以钩子和手动方式运行。 – Liviuge 2013-03-17 20:40:05

回答

1

什么帐户是svn运行?我推荐的几件事情

  1. 在更新指定--username,你可能不希望添加SVN运行为访问回购
  2. 添加--accept theirs-full到本地服务帐户总是在冲突
  3. 的事件的服务器副本,一旦你拨打你可能会希望--quiet以及
+0

对于迟到的答案感到抱歉。该日志应包含完整的用户名,但只包含服务器名称和“$”:XIBM $ 我正在尽快尝试您的建议。 (tomorow :)) – Liviuge 2013-03-26 16:09:31

2

正如我多次提到,不要用后提交脚本做到这一点。当该提交后脚本正在运行时,该用户被锁定并正在等待该提交完成。在这段时间里,他们对电脑,Subversion和你生气。

而是使用像Jenkins这样的持续集成引擎来处理这个问题。詹金斯很容易设置,并且会消除提交后脚本的痛苦。

另外,詹金斯可以保存所有提交的完整历史记录,以及发生了什么更新到服务器,并可以发送电子邮件给您,如果出现问题。更好的是,你可以使用诸如Promote Build插件来挑选你想要部署到服务器的提交。

+0

感谢您的建议,但我们确实只有2个用户,提交非常罕见。尽管如此,由于服务器是windows系统,而且我们没有ssh访问权限,只有远程桌面才能通过远程桌面进行登录以便进行更新。 – Liviuge 2013-03-26 16:08:16