0

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

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

IE:

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

下面的代码片段显示了我是如何尝试去做的,但是 info.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 ..
}
4

1 回答 1

1

Revision在 foreach 循环期间从同一个地方读取,这就是它不会改变的原因。

您循环获取值的SvnLogEventArgsLogMessage类也有一个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);
}
于 2013-08-08T06:47:08.040 回答