1

我正在使用 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/用户、经过身份验证的用户、管理员、来宾以及几乎所有在服务器上移动但没有运气的东西设置完全权限。因此,我们非常感谢任何帮助。

4

2 回答 2

2

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

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

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

于 2013-03-18T19:47:12.990 回答
1

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

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