有很多类似于我的问题,但没有一个问题触及我想要做的事情。我正在使用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 ..
}
答案 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);
}