Как получить список измененных файлов в SharpSVN (например, svn diff --summarize --xml) - PullRequest
5 голосов
/ 17 марта 2012

Я пытаюсь получить список измененных файлов из SharpSVN.Я могу получить необходимые данные в командной строке следующим образом:

svn diff -r <startrev>:HEAD --summarize --xml

Может ли кто-нибудь указать мне правильное место в лабиринте SharpSVN, чтобы воспроизвести это?В идеале я мог бы вывести коллекцию измененных файлов, но я могу проанализировать поток, если потребуется.

Ответы [ 2 ]

4 голосов
/ 18 октября 2012

Эквивалент SharpSvn svn diff --summarize равен SvnClient.DiffSummary().

Вы можете использовать его как

using (var client = new SvnClient())
{
   var location = new Uri("http://my.example/repos/trunk");
   client.DiffSummary(new SvnUriTarget(location, 12), new SvnUriTarget(location, SvnRevision.Head),
                      delegate(object sender, SvnDiffSummaryEventArgs e)
                      {
                        // TODO: Handle result
                      });
}

когда вы хотите получить результаты по мере их поступления.

Или вы можете использовать .GetDiffSummary(), если хотите получить окончательный результат в виде списка.

2 голосов
/ 16 апреля 2012

есть самый простой способ сделать это, но здесь есть несколько другой подход:

с помощью sharpsvn используйте команду Status , чтобы получить статус всех файлов в WorkingCopy и Repository Status и затем сравнитьмежду ними

пример:

using (SvnClient cl = new SvnClient())
  cl.Status(YourPath, new SvnStatusArgs {
    Depth = SvnDepth.Infinity, ThrowOnError = true,
    RetrieveRemoteStatus = true, Revision = SvnRevision.Head}, 
    new EventHandler<SvnStatusEventArgs>(
       delegate(object s, SvnStatusEventArgs e) {
          switch (e.LocalContentStatus) {
             case SvnStatus.Normal:break;
             case SvnStatus.None: break;
             case SvnStatus.NotVersioned: break;
             case SvnStatus.Added:break;
             case SvnStatus.Missing: break;
             case SvnStatus.Modified: break;
             case SvnStatus.Conflicted: break;
             default: break;
          }
          switch (e.RemoteContentStatus) {
             case SvnStatus.Normal:break;
             case SvnStatus.None: break;
             case SvnStatus.NotVersioned: break;
             case SvnStatus.Added:break;
             case SvnStatus.Missing: break;
             case SvnStatus.Modified: break;
             case SvnStatus.Conflicted: break;
             default: break;
          }
       }));
...