SVN导出单个文件的多个版本以进行比较

时间:2011-12-06 15:22:05

标签: svn tortoisesvn

我需要跟踪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 个答案:

答案 0 :(得分:1)

我认为这不能在TSVN中完成。如果您使用svn command line,则可以获得执行运行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);

这可能并不完美,但它应该是一个开始。