SVN Экспорт нескольких ревизий одного файла для сравнения - PullRequest
0 голосов
/ 06 декабря 2011

Мне нужно отслеживать исторические изменения домашней страницы в SVN.

При каждой регистрации мы меняли код отслеживания на главной странице. Я пытаюсь получить код отслеживания вместе с датой его регистрации.

На главной странице более 100 ревизий, поэтому я не хочу делать это вручную.

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

Итак, экспорт файлов выглядит примерно так

/ 1-1-2011 / home.htm

/ 1-4-2011 / home.htm

Или

/ 1-1-2011_home.htm

/ 1-4-2011_home.htm

Я использую клиент TortoiseSVN.

редактировать: Код, который я ищу, находится в фактическом home.htm, а не в сообщениях журнала. Я напишу парсер, чтобы получить код, как только получу экспортированные ревизии файла.

1 Ответ

1 голос
/ 06 декабря 2011

Не думаю, что это можно сделать в ЦВН.Если вы используете командную строку svn , вы можете выполнить прогон svn log home.htm --xml, чтобы получить ревизии в формате XML.Затем создайте быстрое приложение на C # для синтаксического анализа xml, получения даты, ревизии и даты, а также создания командного файла.

Вот что я написал в Linqpad :

var doc = XDocument.Load(@"C:\Temp\SOLog.xml");

var bat =
    String.Join(Environment.NewLine,
    doc
    .Root
    .Elements("logentry")
    .Select(xe =>
        new
        {
            Revision = xe.Attribute("revision").Value,
            Date = DateTime.Parse(xe.Element("date").Value).ToString("dd-MM-yyyy"),         })
    .Select(a => String.Format("svn export -r {0} Home.htm C:\\Temp\\{1}", a.Revision, a.Date)));

bat.Dump(); //View Contents

using(System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\Temp\SOExport.bat", true))
    sw.WriteLine(bat);

Возможно, это не идеально, но это должно быть начало.

...