Как я могу определить магистральную ревизию, используемую для создания ветки с SharpSvn?

В настоящее время я создаю генератор ChangeLog, который создает такой журнал, различая ревизии /trunk против / branch /... (которая была создана в некоторой точке из /trunk), чтобы увидеть, какие коммиты не находятся в ветвь (а затем делает некоторые модные запросы Redmine).

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

Я знаю функцию " Остановить при копировании / переименовании" в TortoiseSVN, чтобы определить ревизию, используемую для создания определенной ветви или тега.

Как я могу добиться этого с SharpSvn - или есть более простой способ определить разницу (для упрощения запроса: я буду только diff /trunk против нисходящей ветви...).

2 ответа

Решение

Я получил это для работы со следующим кодом - но я не уверен, что это самый элегантный способ сделать это:

var svnClient = new SvnClient();
svnClient.GetLog(new Uri("http://..../REPOSITORY/BRANCH/FOO",
                 new SvnLogArgs
                 {
                   StrictNodeHistory = true
                 },
                 out logItems);
var initRevision = logItems.OrderBy(arg => arg.Revision)
                           .First();
var changedPath = initRevision.ChangedPaths.Single();
//changedPath.CopyFromRevision
//changedPath.CopyFromPath

Меня беспокоит то, что мне нужно получить весь журнал, а затем заказать его соответствующим образом, чтобы получить первоначальную ревизию, которая используется для получения CopyFromRevision а также CopyFromPath свойства.

Если вы сохраняете ваши ветви относительно связанными, вы можете использовать некоторых из помощников Mergeinfo в Subversion, чтобы выполнить большую часть тяжелой работы по определению того, что находится в одной ветви, а не в другой.

Но если вы используете строгую политику проекта, делать вещи самостоятельно может быть гораздо проще. Subversion пытается решить все проблемы на 100%, что может соответствовать или не соответствовать вашим требованиям.

Другие вопросы по тегам