我正在使用 svn apache 模块来管理我在网络服务器上的存储库,并使用 tartoise svn 与其进行交互。
我想在我提交某些内容时自动更新服务器上的工作副本,这样我就不必在服务器上手动远程桌面并手动运行更新。
为此,我在 repo 上创建了一个简单的提交后钩子(Hook)
echo %username% >> C:\debug.txt
svn update F:\wampserver64\www\netcity\maintenance\ >> C:\debug.txt
问题是我无法再对 repo 进行任何更改。 Commit 在达到 100% 后挂起,ok 按钮变灰。之后,提交的文件在客户端和服务器上都处于锁定状态,我必须在两个站点上手动清理和更新。 echo %username% 用于调试目的。我怀疑这可能是一个权限问题,所以我回显了用户名 svn runs as。这是输出:
XIBM$
Updating 'F:\wampserver64\www\netcity\maintenance':
XIBM$ 甚至不是用户名。它是服务器的名称。如果手动运行,.bat 钩子(Hook)运行正常并返回合理的输出:
liviu.gelea
Updating 'F:\wampserver64\www\netcity\maintenance':
At revision 19.
我已经尝试为 XIBM/用户、经过身份验证的用户、管理员、 guest 以及服务器上移动的几乎所有内容设置完全权限,但没有成功。因此非常感谢任何帮助。
最佳答案
正如我多次提到的,不要使用提交后脚本来执行此操作。当该提交后脚本正在运行时,用户被锁定并等待该提交完成。在这段时间里,他们会对他们的计算机、Subversion 和你生气。
相反,使用持续集成引擎,如 Jenkins来处理这个。 Jenkins 易于设置,并且会消除提交后脚本的痛苦。
此外,Jenkins 可以保留所有提交的完整历史记录,以及服务器更新发生的情况,如果出现问题,可以给您发送电子邮件。更好的是,您可以使用类似 Promote Build 插件的东西来选择您真正想要部署到服务器的提交。
关于windows - win apache svn 提交后更新挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15406371/