【问题标题】:svnkit: get uploaded file content during pre-commit hooksvnkit:在预提交挂钩期间获取上传的文件内容
【发布时间】:2013-08-10 06:00:54
【问题描述】:

我正在用 Java 编写一个预提交挂钩。预提交挂钩(批处理文件)使用参数调用我的 Java 程序:repositoryLocationtransactionId。我需要在提交期间验证 XML 文件,如果其中任何一个似乎无效,我会将非零退出代码返回到我的预提交挂钩,然后回滚整个提交事务。

我可以通过以下方式访问文件的任何修订版的内容代码:

SVNRepository repository = ...;
SVNProperties fileProperties = new SVNProperties();
ByteArrayOutputStream baos = new ByteArrayOutputStream( );

repository.getFile( changeEntry.getCopyFromPath() , revisionNum , fileProperties , baos );
log.debug("<![CDATA["+baos.toString()+"]]>");

但是我无法访问正在上传的文件的内容(工作副本的内容,由用户提交)。我不想向 SVN 写任何东西,我需要读取上传文件的内容,然后进行一些验证。在我的 Java 程序完成后,SVN 将完成提交或回滚。

谁能帮我解决这个问题?

【问题讨论】:

    标签: svn transactions svnkit pre-commit working-copy


    【解决方案1】:

    在钩子的 bat 文件中,您可以使用 svnlook changed ... 来获取事务中的文件列表以及来自 changed 命令的文件名 - svnlook cat ... FILENAME 以便在标准输出中获取文件内容

    【讨论】:

      【解决方案2】:

      感谢 Lazy Badger 和我同事之一的建议,我才发现

      SVNLOOK CAT repoPath -t txn
      

      是我需要重新发明的命令,所以通过查看

      org.tmatesoft.svn.core.wc.admin.SVNLookClient.doCat(File repositoryRoot, String path, String transactionName, OutputStream out) throws SVNException
      

      函数,我可以获得必要的输出流并完成其余的技巧;-)

      【讨论】:

        猜你喜欢
        • 2015-10-10
        • 1970-01-01
        • 2015-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多