如何复制目录树但排除.svn目录?

如何复制目录树但排除.svn目录?,svn,Svn,问题是: 循环浏览所有文件和子文件夹,将除.svn以外的所有内容复制到其他位置 我可以想出一些非常复杂的方法来实现这一点,但我想知道是否有人知道一个真正简单的函数来节省我一点时间?谢谢。使用rsync和-exclude开关 …虽然在这种特定情况下,更好的选择是您可以使用该命令。它将使用存储库中的工作副本或修订内容填充目标文件夹。如果您使用的是OrtoiseSVN,请使用导出 我们有时使用无法比较的http://beyond-compare.softonic.com/: 选择根源目录和目标目录ex

问题是:

循环浏览所有文件和子文件夹,将除.svn以外的所有内容复制到其他位置

我可以想出一些非常复杂的方法来实现这一点,但我想知道是否有人知道一个真正简单的函数来节省我一点时间?谢谢。

使用rsync和-exclude开关


…虽然在这种特定情况下,更好的选择是

您可以使用该命令。它将使用存储库中的工作副本或修订内容填充目标文件夹。

如果您使用的是OrtoiseSVN,请使用导出

我们有时使用无法比较的http://beyond-compare.softonic.com/: 选择根源目录和目标目录exclude.svn并执行同步。如果您需要再次执行此操作,则此操作非常有用:将设置保存为项目。

因此,我最近使用python实现此操作的快捷方式是:

for root, dirs, files in os.walk(inRootDirArg):
        for d in dirs: 
            if d.startswith('.'):#excludes directories that start with '.'
                continue
            ...<logic to move your desired directories>...

此解决方案忽略任何以“.”开头的目录,但如果需要更具体一些,则不难修改它以仅省略.svn目录。

正如其他人所说,svn export

但是,您也可以使用Xcopy和exclude开关轻松完成此操作,请参见此处:

在这里:

第二个链接对排除开关有更好的描述。

使用Cmd

Dir/a-d/s/b >>1.txt

并使用AutoIt读取文件,最好使用_FileReadToArray,在循环中,检查文件路径是否包含“.svn”

如果不需要AutoIt,则可以将xcopy与排除文件一起使用:

xcopy "..\source\" "..\destination\" /E /Y /R /exclude:exclude.txt
exclude.txt应包含:

\.svn\

出于兴趣,并且已经看到了答案。我是愚蠢的,但什么是使这脱离颠覆控制的原因呢。这是一个真正愚蠢的问题!!我做了类似的事情来备份工作中存储库的本地副本,因为每次签出都相当大,节省了很多时间。这只是一个“学习/突破”副本,不会被重新检入-否则我不建议这样做。您应该修改问题,以更清楚地说明您正在使用AutoIt,或者,如果您不需要AutoIt解决方案,请删除该标记。@brumcouse-通常您希望在发布时从版本控制中导出内容。只是一个建议。OP希望复制所有内容,其中可能包括不受版本控制的文件。文档中明确说明svn导出不会复制不受版本控制的文件。@msx是的,根据文字问题文本,它可能有。幸运的是,真正的问题在于文字和措辞下面,是关于控制的版本content@xtofl明显地我完全同意你的看法。将您的答案视为最佳答案表示OP对解决方案完全满意。我自己也在寻找复制所有内容的解决方案,但是.svn文件夹和svn导出并不能解决我的问题。因此,我的评论。。。希望它能抽出时间给其他人寻找类似于我的问题的解决方案。