【问题标题】:How to access file information in a pre-commit hook using SharpSVN如何使用 SharpSVN 在预提交挂钩中访问文件信息
【发布时间】:2010-01-15 21:23:15
【问题描述】:

总的来说,我是 SharpSVN 和 SVN 的新手。我正在尝试实现一个预提交挂钩,当用户提交某种类型的 XML 文件时;在我允许提交文件之前,我需要截取文件并对其进行分析以确保它们包含某些元素。

由于 SVN 似乎提交了两个参数;存储库路径和事务;我将需要使用这两项来拦截文件。有谁知道我需要在 SharpSVN 中使用什么来根据这两个参数获取文件信息?

谢谢, 跳蚤#

【问题讨论】:

    标签: svn sharpsvn pre-commit-hook


    【解决方案1】:

    您可以使用内置的SvnLookClient 来做到这一点。

    要使用它,首先你需要一个SvnLookOrigin。 SharpSvn 包含标准参数解析,它“知道”传递给每种类型的钩子的参数。这使您可以访问此SvnLookOrigin

    SvnHookArguments ha; 
    if (!SvnHookArguments.ParseHookArguments(args, SvnHookType.PreCommit, false, out ha))
    {
        Console.Error.WriteLine("Invalid arguments");
        Environment.Exit(1);  
    }
    

    根据解析的参数获取更改的文件和这些文件的内容

    using (SvnLookClient cl = new SvnLookClient())
    {
        Collection<SvnChangedEventArgs> changedItems;
        cl.GetChanged(ha.LookOrigin, out changedItems);
    
        foreach(var item in changedItems)
        {
            if(!IsXmlFile(item)) continue;
    
            using(MemoryStream ms = new MemoryStream())
            {
                cl.Write(ha.LookOrigin, item.Path, stream);
    
                VerifyXMLStream(stream);
            }
        }
    }
    

    编辑:写入Console.ErrorEnvironment.Exit(1) 以报告错误(退出非空)。

    【讨论】:

      猜你喜欢
      • 2010-11-25
      • 2011-04-01
      • 2010-12-13
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多