svn - 如何在两个SVN版本之间导出更改的文件

标签 svn

如何导出两个版本之间已更改的SVN中的更改文件。我需要通过命令行或使用任何脚本(具有正确的文件夹结构)的解决方案。另外,我需要基于Windows的解决方案。

例如像:

export {svn diff --summarize -r 50:HEAD}

我想要一个目录树,其中包含文件的副本,该文件的版本在50以后的任何修订版本中均已更改

最佳答案

据我所知,svn没有提供这种功能。但是您可以使用SharpSVN编写一个简单的C#程序来执行此操作。这是您可以使用的示例。在此示例中,我将整个文件从修订版100升级到200。

using SharpSvn;
using System.IO;
using System.Collections.ObjectModel;
using Microsoft.VisualBasic;

namespace SvnDiffExporter
{
    class Program
    {
        static void Main(string[] args)
        {
            SvnClient client = new SvnClient();
            SvnRevisionRange range = new SvnRevisionRange(100, 200);
            MemoryStream result = new MemoryStream();

            Collection<SvnLogEventArgs> items;
            SvnLogArgs logargs = new SvnLogArgs(range);
            client.GetLog(@"e:\Artifacts", logargs, out items);

            int i = 0;
            string [] path = new string[255];
            foreach (SvnLogEventArgs ar in items)
            {
                foreach (SvnChangeItem changeitem in ar.ChangedPaths)
                {
                    if (changeitem.Action != SvnChangeAction.Delete)
                    {
                        path[i] = changeitem.Path;
                        i++;
                    }
                }
            }

            string localpath = @"c:\data";
            foreach (string str in path)
                client.Export(str, localpath);
        }
    }
}

关于svn - 如何在两个SVN版本之间导出更改的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7335614/

相关文章:

android - 如何管理免费版本?

svn - 如何从颠覆提交中(重新)生成补丁?

svn - 列出特定用户在 subversion 中更改的所有文件

svn - 防止用户在 svn 中互相覆盖工作

eclipse - 将 IDE 特定文件作为源代码的一部分存储是否有意义

git - 使用本地存储库加速 SVN?

c# - 错误 MSB6006 : "svnversion.exe" exited with code 1

linux - 带有 svn post-commit Hook 的 trac-admin 导致段错误

svn - 从 Mercurial 导出标签的未版本控制副本

svn - 将 SVN 存储库从 Google Code 传输到 RiouxSVN