2
我是SharpSVN和SVN的新手。我試圖實現一個預先提交的鉤子,當用戶提交某種類型的XML文件時;我將需要攔截該文件並對其進行分析,以確保它們包含某些元素,然後才允許提交文件。如何使用SharpSVN訪問預提交鉤子中的文件信息
由於SVN似乎提交了兩個參數,存儲庫路徑和事務;我將需要使用這兩個項目來攔截文件。有誰知道我需要在SharpSVN中使用什麼來獲取基於這兩個參數的文件信息?
感謝, 舊貨#
我是SharpSVN和SVN的新手。我試圖實現一個預先提交的鉤子,當用戶提交某種類型的XML文件時;我將需要攔截該文件並對其進行分析,以確保它們包含某些元素,然後才允許提交文件。如何使用SharpSVN訪問預提交鉤子中的文件信息
由於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);
}
}
}
編輯這些文件:寫入Console.Error
和Environment.Exit(1)
報告錯誤(退出非空)。