从所有目录中删除 .svn 文件

34
可能有重复:
如何删除一个文件夹的Subversion控制?
递归删除匹配的文件和目录的命令行 我最近使用cvs2svn将我的cvs存储库转换为svn,我最近发现每个目录都有一个名为.svn的隐藏文件夹。我的当前构建脚本从我的版本化资源目录中复制了很多目录,结果它会复制.svn文件。是否有办法使svn在检出时不包括这些文件,或者我需要编写一个脚本来删除所有这些.svn文件。许多文件都有这些隐藏的.svn目录,因此,除非我能够为我的Windows安装程序编写递归脚本来执行此操作,否则这将是痛苦的。是否有一种简单的方法防止svn在我的项目中到处放置这个隐藏的目录?

糟糕,选错了:https://dev59.com/IXVC5IYBdhLWcg3w4Vb6 - zzzzBov
12个回答

70

我不确定你的具体情况是否需要删除所有那些 .svn 目录。但如果是的话,这里有一个 Bash 单行命令可以实现:

find . -name .svn -print0 | xargs -0 rm -r

3
在运行命令之前,请确保进入正确的目录,例如: cd 我的SVN目录以删除子文件夹 - Camaleo

28

是的,SVN导出将删除.svn文件。您可以创建一个批处理文件从命令行运行导出命令,并将其纳入构建过程中。 - Jon Onstott
请查看此链接,它帮助了我... http://cocoabugs.blogspot.com/2010/09/script-to-remove-hidden-svn-folder.html - jeeva
2
这很棒,但不幸的是有时候会有人发送一个装满它们的tarball :( - Eva
2
为什么这是被接受的答案?它实际上根本没有回答问题。如果您没有 SVN,它就没用了,如果您有,它也不会删除目录。它创建一个现有文件的副本,省略了 .svn 文件。是的,我在挑毛病,但这是 IT,对吧?根据 https://dev59.com/_m445IYBdhLWcg3wXZS9运行FOR /F "tokens=*" %G IN ('DIR /B /AD /S .svn') DO RMDIR /S /Q "%G"是一个更好的答案。 - Rid Iculous

5

find . -name '.svn' -depth -exec rm -rf '{}' \; -ls

翻译为:在当前目录下查找所有名为“.svn”的文件夹,并删除其中的所有内容,最后列出所有被删除的文件和目录。

给已安装Cygwin的Windows用户点赞。但我仍然发现使用文件资源管理器搜索框更容易。 - Roland

5

我昨天在这里发布了这个问题,但是因为我把它放在了错误的线程中,所以现在再次发布...


我有一些东西可以让你高兴。原始来源在这里

这是一个(完全安全的)Shell扩展程序,将“删除SVN文件夹”添加到Windows右键菜单中。在任何包含这些讨厌文件的目录上运行它。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

将此部分添加到您的构建脚本中,请将该调用复制到cmd.exe并执行。

5
在Win32/Win64系统上,以下命令应该可以完成任务:
del /q /s  .svn

4
那些文件夹是Subversion与工作副本(即您已经进行了checkout的位置)一起使用所必需的。
一个选项是将其导出到另一个位置。导出不会有.svn文件夹,您可以在其上运行脚本。文档:svn export, TortoiseSVN Export 另一个选项是修改脚本以忽略隐藏目录,或构建更好的构建工具。

3

还有一个PowerShell版本

ls  -Force -Recurse -Filter  .svn  | rm -Force -Recurse

有时候继承的代码会更有用。谢谢! - jray

1

1

svn export 是你想要的。 它会给你一个干净的代码树副本,没有 .svn 目录(请注意,此副本不受版本控制,并且一旦导出,svn 命令将无法在其上运行)。

我利用这种方法在生产服务器上启动代码。 我们的构建脚本对代码分支进行导出,打包并压缩它,然后将其上传到正确的服务器并解压缩。


0

查找 "/YourFolder" 目录下的所有名为 ".svn" 的文件夹并删除,命令如下:

请检查此链接 link


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接