SVN Post-commit导入

问题描述 投票:1回答:1

我有一组服务器端的Pre-and-Commit-hook挂钩,可以让我们更容易跟踪更改(Windows服务器上的VisualSVN,如果这很重要):

如果用户文件属于特定类型(二进制文件),则预提交会将用户文件导出到服务器,然后使用程序将这些文件导出为基于文本的格式,任何文本编辑器都可以查看该格式。

然后,Post-Commit应该将这些文件导入到与原始文件提交的相同的存储库和相同的文件夹中,作为可跟踪的.exp文件。

我的问题在于后提交:似乎运行导入(后来被'svnmucc put'替换)在前一次提交处于活动状态时不起作用(用户提交似乎在此脚本完成之前没有完全完成)。因此,脚本卡在此处,没有错误或消息详细信息,并且未完成提交后提交。

这是有问题的一行(如果我删除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

这里的问题似乎是文件夹被锁定,或者提交被阻止,直到原始提交完成,这意味着此命令等待原始提交退出。如果我能以某种方式使提交后解锁文件夹,或强制svnmucc运行,这将解决我的问题。

因此,我的问题是:有没有办法让这项工作成功?对我们来说,最好的情况是SVN在提交成功后以某种方式管理它,但似乎在Post-Commit中运行任何脚本使得SVN客户端等待这些脚本完成后才能完全完成。

服务器端提交脚本可能是首选的另一个原因是因为整个导出到可读格式的操作发生在服务器上。因此,.exp文件存储在服务器上,而不是客户端上。可能是将此文件添加到原始提交,但我从未见过任何人解释如何。

svn visualsvn-server svn-hooks post-commit
1个回答
1
投票

如果不查看您运行的提前和提交后挂钩代码,很难确定此行为的根本原因。但是,您似乎遇到了递归问题,因为:

...

然后,Post-Commit应该将这些文件导入到与原始文件提交的相同的存储库和相同的文件夹中,作为可跟踪的.exp文件。

...

我猜你的钩子脚本运行svn import或其他应该进行新提交的操作。此操作将再次触发您的提交挂钩,从而导致循环。

因此,我的问题是:有没有办法让这项工作成功?对我们来说,最好的情况是SVN在提交成功后以某种方式管理它,但似乎在Post-Commit中运行任何脚本使得SVN客户端等待这些脚本完成后才能完全完成。

您的用户使用什么SVN客户端?是TortoiseSVN吗?他们使用其他客户吗?

我问的是TortoiseSVN因为它支持client-side hook scripts而且有可能在客户端执行这种导出/转换为*.exp格式会更好。

随意扩展您的问题与更多细节 - 更多信息将有助于更好地了解您的案例和要求。

© www.soinside.com 2019 - 2024. All rights reserved.