gpt4 book ai didi

svn - 如何使用 SharpSVN 在预提交 Hook 中访问文件信息

转载 作者:行者123 更新时间:2023-12-04 06:59:41 25 4
gpt4 key购买 nike

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

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

谢谢,
跳蚤#

最佳答案

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

要使用它,首先你需要一个 SvnLookOrigin . SharpSvn 包含标准参数解析,它“知道”传递给每种类型的钩子(Hook)的参数。这使您可以访问此 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)报告错误(退出非空)。

关于svn - 如何使用 SharpSVN 在预提交 Hook 中访问文件信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2074891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com