Получить список номеров редакций и связанные с ними комментарии к редакциям

есть много вопросов, похожих на мои, но ни один из них не касается того, что я пытаюсь сделать. Я использую SharpSVN для написания простого клиента, который может получить определенные версии каждого файла из svn по пути к файлу по моему выбору. У меня это работает, однако мне приходится указывать все вручную, и я хотел бы, чтобы это было более наглядно.

Для этого я хочу создать окно ревизии, которое может отображать все номера ревизий и комментарии в одном представлении. Но я не могу получить номер версии, который идет с каждым сообщением журнала.

ie:

r3 — сообщение журнала, которое идет с r3 — (возможно, даже автор)
r2 — сообщение журнала, которое идет с r2 — (возможно, даже автор)
r1 — сообщение журнала, которое идет с r1 — (возможно, даже автор )

Фрагмент ниже показывает, как я пытаюсь это сделать, но info.Revisionaways печатает только последнюю версию.

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

person Torrey Braman    schedule 07.08.2013    source источник
comment
Да, я определенно должен иметь client.GetInfo() вне цикла. Однако я не знаю, как/какой метод вызвать, чтобы получить информацию о каждом входе в систему, как я делаю с logentry.LogMessage   -  person Torrey Braman    schedule 08.08.2013
comment
в документации класс SvnLogEventArgs имеет свойство Revision, возможно, вы могли бы попробовать это. см. Члены SvnLogEventArgs   -  person    schedule 08.08.2013
comment
БОЛЬШОЙ ГИГАНТСКИЙ FACEPALM Да, это то, что мне было нужно. Спасибо!   -  person Torrey Braman    schedule 08.08.2013
comment
@TorreyBraman, если вы решили эту проблему, опубликуйте ее как ответ, нажав кнопку Опубликовать ответ внизу, а затем < b>примите это как правильный ответ, но не помещайте его в заголовок и не используйте теги в заголовке, поскольку они НЕ требуются, спасибо. Если это было решено кем-то другим, вы можете попросить этого человека опубликовать свой комментарий в качестве ответа, а затем выбрать его как правильный ответ, в конечном счете, если он не хочет публиковать его как ответ, просто сделайте это самостоятельно и отметьте как правильный ответ.   -  person Prix    schedule 08.08.2013


Ответы (1)


Вы читаете Revision из одного и того же места во время цикла foreach, поэтому оно не меняется.

Класс SvnLogEventArgs, который вы выполняете в цикле для получения значения LogMessage, также имеет свойство 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);
}
person Community    schedule 08.08.2013