windows - win apache svn 提交后更新挂起

标签 windows svn post-commit

我正在使用 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/

相关文章:

windows - 批量更改到随机子目录

svn - 在没有 Trunk 的情况下使用 Subversion

git - 如何让提交作者发送 git post-receive 电子邮件?

python - 从 windows 和 linux 中的子文件夹导入函数

c++ - qt linux "QMAKE_CXXFLAGS += -std=c++11"相当于 windows?

windows - 批处理 TAB 分隔符还会在 ECHO 后删除字符 T、A 和 B

svn - 如何将旧版本的代码作为标记版本添加到 Subversion 存储库中

svn - 该客户端太旧,无法使用工作副本

svn - 使用提交后钩子(Hook)在 VisualSVN Server 中导出

每个分支的 Git 提交钩子(Hook)