Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SharpSVN访问预提交钩子中的文件信息_Svn_Sharpsvn_Pre Commit Hook - Fatal编程技术网

如何使用SharpSVN访问预提交钩子中的文件信息

如何使用SharpSVN访问预提交钩子中的文件信息,svn,sharpsvn,pre-commit-hook,Svn,Sharpsvn,Pre Commit Hook,我对SharpSVN和SVN都是新手。我试图实现一个预提交钩子,当用户提交某种类型的XML文件时;在我允许提交文件之前,我需要截取文件并对其进行分析,以确保它们包含某些元素 因为SVN似乎提出了两个论点;存储库路径和事务;我需要使用这两项来截取文件。有人知道我需要在SharpSVN中使用什么来获取基于这两个参数的文件信息吗 谢谢, 跳蚤#您可以通过使用内置的SvnLookClient来实现这一点 要使用它,首先需要一个SvnLookOrigin。SharpSvn包含标准的参数解析,“知道”传递给

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

因为SVN似乎提出了两个论点;存储库路径和事务;我需要使用这两项来截取文件。有人知道我需要在SharpSVN中使用什么来获取基于这两个参数的文件信息吗

谢谢,
跳蚤#

您可以通过使用内置的
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);
        }
    }
}
使用(SvnLookClient cl=new SvnLookClient())
{
收集变更数据项;
cl.GetChanged(ha.LookOrigin,out changedItems);
foreach(changedItems中的变量项)
{
如果(!IsXmlFile(item))继续;
使用(MemoryStream ms=new MemoryStream())
{
cl.Write(ha.LookOrigin、item.Path、stream);
验证xmlstream(stream);
}
}
}
编辑:写入
控制台。错误
环境。退出(1)
报告错误(退出非空)