2010-07-12 2 views
1

В последнее время я работаю с SharpSVN, и в настоящее время я пытаюсь получить все ревизионные номера версий. Я вижу, что используя SvnLogEventArgs.HasChildren, я могу проверить, что они существуют, но для этого нужно фактическое число детей под ним. Я смотрел на объект SvnClient и вижу GetMergesMerged(), но не могу определить, что его подавать, чтобы вернуть ему правильные значения, прямо сейчас он ничего не возвращает.Как вы получаете номер ревизии дочерних строк SvnLogEventArgs в SharpSVN?

System.Collections.ObjectModel.Collection<SvnMergesMergedEventArgs> logitems = null; 
SvnTarget target = SvnTarget.FromUri(new Uri(myRepoURL)); 
SvnUriTarget targetUri = new SvnUriTarget(new Uri(myRepoURL), revision); 
client.GetMergesMerged(target, targetUri, out logitems); 

Это то, что я в настоящее время использую, но ничего не возвращает, если кто-то может мне точку в правильном направлении, это будет оценено. -Подшипники

+0

«а ПЕРЕСМОТРЫ детских номеров ревизий», можете ли вы указать, может быть, на пример, что вы имеете в виду здесь? –

+0

@ Sander Rijken Извините за задержанный ответ, похоже, что URL-адрес изменился, и я не видел никаких обновлений в этом сообщении: Что бы я хотел, похоже на то, как TurtoiseSVN с цепочкой объединяет версии с помощью «Включить объединенные версии ». Таким образом, даже если изменение файла в текущем URL-адресе было изменено иначе, я все равно смогу отбросить этот файл туда, где он был изначально. –

+0

Какую команду вы выполняете в TortoiseSvn, чтобы увидеть эту цепочку? Вход/история? –

ответ

2

Чтобы сделать то, что вы хотите, вы должны использовать метод Log10 (или GetLog).

Client.Log(new Uri(myRepoUrl), 
    new SvnLogArgs 
    { 
     Start = startRevision, 
     End = endRevision, 
     Limit = numberOfItemsToFetch, 
     RetrieveMergedRevisions = true 
    }, 
    (s, e) => 
    { 
     // e.MergeLogNestingLevel indicates if this is the first, second or nth level merge 
    }); 

Как при каждом вызове SharpSvn, который принимает делегат, если вы хотите использовать EventArgs вне делегата, не забудьте вызвать e.Detach() внутри делегата/лямбда

+0

Хорошо, я думаю, что вижу, я на самом деле в настоящее время использую RetrieveMergedRevisions, поэтому я не уверен, почему я не видел этого Раньше у меня была вся информация для определения NestingLevel, но она пыталась сделать это на основе Revision-> Revision и не смотрела на общую картину. Благодарю. –

+0

'GetMergesMerged' - проверить, какие изменения были объединены между источником и целью, поэтому он будет содержать только объединенные версии, а не обычные. –

+0

Я вижу, я был смущен тем, почему было несколько целей, один из которых был источником, а другой цель, которая имеет гораздо больше смысла, документация API не объясняет многое, поэтому мне часто приходится проходить тестирование и пытаться сделать вывод о том, что делает каждый метод класса. Спасибо за объяснение. –