【发布时间】:2019-02-16 18:40:18
【问题描述】:
我有一组服务器端提交前和提交后挂钩,可以让我们更轻松地跟踪更改(Windows 服务器上的 VisualSVN,如果这很重要的话):
如果用户文件属于特定类型(二进制文件),Pre-Commit 会将它们导出到服务器,然后使用程序将这些文件导出为任何文本编辑器都可以查看的基于文本的格式。
然后,提交后应将这些文件 SVN 导入到与提交原始文件相同的存储库和相同文件夹中,作为现在可跟踪的 .exp 文件。
我的问题在于提交后:似乎运行导入(后来被'svnmucc put'代替)在前一个提交处于活动状态时不起作用(用户提交似乎在此脚本完成之前没有完全完成)。因此,脚本卡在此处,没有错误或消息详细信息,也没有完成 Post-Commit。
这是有问题的行(如果我删除 Echo,提交将停止):
Echo svnmucc put %LineName% %Address% -F comment%TXN%.txt --non-interactive --no-auth-cache>Command.txt
这是 'Command.txt' 中的输出,如果之后启动它会成功运行:
svnmucc put Test2.exp https://10.49.1.52/svn/PlcLibraries/TestFolder/Lib/Test2.exp -F comment79-6m.txt --non-interactive --no-auth-cache
这里的问题似乎是文件夹被锁定,或者提交被阻止,直到原始提交完成,这意味着该命令等待原始提交退出。如果我能以某种方式让 post-commit 解锁文件夹,或者强制 svnmucc 运行,这将解决我的问题。
因此,我的问题是:有没有办法做到这一点? 对我们来说,最好的情况是 SVN 在提交成功后以某种方式对其进行管理,但似乎在 Post-Commit 中运行任何脚本会使 SVN 客户端等待这些脚本完成后再完全完成。
服务器端提交脚本更受欢迎的另一个原因是,整个导出到可读格式的操作发生在服务器上。因此,.exp 文件存储在服务器上,而不是客户端上。一种可能是将此文件添加到原始提交中,但我从未见过有人解释如何。
【问题讨论】:
标签: svn visualsvn-server svn-hooks post-commit