【问题标题】:SVN Post-commit importSVN 提交后导入
【发布时间】: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


    【解决方案1】:

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

    ...

    然后提交后应将这些文件 SVN 导入到相同的 存储库和与原始文件提交到相同的文件夹,如 现在可跟踪的 .exp 文件。

    ...

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

    因此,我的问题是:有没有办法做到这一点?为我们, 最好的情况是 SVN 在之后以某种方式管理它 提交成功,但似乎在运行任何脚本 Post-Commit 让 SVN 客户端等待这些脚本完成 在完全完成之前。

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

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

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

    【讨论】:

    • 是的,我们所有的客户都将使用 TortoiseSVN,但我不知道有什么方法可以远程安装客户端脚本?将使用更多详细信息编辑问题
    猜你喜欢
    • 2012-10-06
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    相关资源
    最近更新 更多