检索修订号列表及其关联的修订注释

本文关键字:关联 注释 列表 检索 | 更新日期: 2023-09-27 18:26:57

有很多类似于我的问题,但没有一个完全涉及我要做的事情。我正在使用SharpSVN编写一个简单的客户端,它可以将svn中的每个文件的特定修订获取到我选择的文件路径。我已经完成了这项工作,但我必须手工指定所有内容,我希望它更直观。

为此,我想创建一个修订窗口,可以在一个视图中显示所有修订号和注释。但是,我似乎无法获得每个日志消息的修订号。

即:

r3-与r3-(甚至可能是作者)一起的日志消息
r2-与r2一起的日志消息-(甚至可能是作者)
r1-与r1一起的日志消息-(甚至可能是作者)

下面的片段显示了我是如何尝试的,但信息。Revision aways仅打印最新修订。

//SvnUriTarget is a wrapper class for SVN repository URIs
SvnUriTarget target = new SvnUriTarget(tbRepoURI.Text);
//============
Collection<SvnLogEventArgs> logitems = new Collection<SvnLogEventArgs>();
SvnLogArgs arg = new SvnLogArgs();
client.GetLog(new System.Uri(target.ToString()), arg, out logitems);
SvnLogEventArgs logs;
SvnInfoEventArgs info;
client.GetInfo(target.ToString(), out info);
foreach (var logentry in logitems)
{
    MessageBox.Show(info.Revision + ": " + logentry.LogMessage); // only read ..
}

检索修订号列表及其关联的修订注释

在foreach循环期间,您正在从同一位置读取Revision,这就是为什么它不会更改。

您循环以获取LogMessage值的SvnLogEventArgs类也有Revision属性,您应该使用它来获取该日志项的修订,而不是从头部获取修订

所以代码可能看起来像这个

//SvnUriTarget is a wrapper class for SVN repository URIs
SvnUriTarget target = new SvnUriTarget(tbRepoURI.Text);
Collection<SvnLogEventArgs> logitems = new Collection<SvnLogEventArgs>();
SvnLogArgs arg = new SvnLogArgs();
client.GetLog(new System.Uri(target.ToString()), arg, out logitems);
foreach (var logentry in logitems)
{
    MessageBox.Show(logentry.Revision + ": " + logentry.LogMessage);
}