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

时间:2013-08-07 20:32:34

标签: c# sharpsvn

有很多类似于我的问题,但没有一个问题触及我想要做的事情。我正在使用SharpSVN编写一个简单的客户端,它可以从svn中获取每个文件的特定修订版本到我选择的文件路径。我有这个工作,但我必须手工指定一切,我希望它更直观。

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

即:

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 ..
}

1 个答案:

答案 0 :(得分:1)

你正在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);
}