How to access file information in a pre-commit hook using SharpSVN

喜你入骨 提交于 2019-12-01 00:54:47
Sander Rijken

You can do this by using the builtin SvnLookClient.

To use this, first of all you need a SvnLookOrigin. SharpSvn contains standard argument parsing that 'knows' what arguments are passed to each type of hook. This gives you access to this SvnLookOrigin:

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

Getting the changed files and contents of those files based on the parsed arguments

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);
        }
    }
}

Edit: Write to Console.Error and Environment.Exit(1) to report errors (exit non-null).

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!