【问题标题】:54k+ files in svn directory - how to deletesvn 目录中的 54k+ 个文件 - 如何删除
【发布时间】:2011-11-20 17:22:27
【问题描述】:

我在 svn 中有一个目录,里面有 54 000 个文件。我重新排列了目录,所以我现在在 1000 个文件以下的每个文件中有 54 个文件夹,并将其提交给 svn。 但我无法从 svn 中删除 54k 文件。删除它花了我很长时间,但现在当我尝试提交时,我得到了: svn: 网络连接意外关闭

还有其他方法可以轻松快速地删除这些文件吗?

【问题讨论】:

  • 你在什么操作系统上运行?
  • 目前linux和我在windows中遇到了与乌龟相同的svn错误:
  • 如何将其从 SVN 存储库中取出,删除文件并再次提交。但它也会删除您的所有历史记录。如果要保留历史记录,不推荐。
  • 每次我看到这个问题的标题时,我都会根据 modems 来阅读它,因为54+(a little bit) kps 大约是您可以可靠地摆脱“56k”调制解调器的最佳状态在标准电话线上(受信号质量和电话网络切换的限制)。

标签: php svn tortoisesvn


【解决方案1】:

在 Linux 下,将 find 命令与 XArgs 命令结合使用。

http://www.computerhope.com/unix/ufind.htm
http://www.computerhope.com/unix/xargs.htm

类似:

find . -name *.foo -print | xargs rm

会成功的。

查看我提供的 2 个链接以获取更多信息, -name 允许您使用普通通配符,例如 * & ? , -regex 允许您使用完整的正则表达式字符串进行更多控制。

对于测试,您需要确保使用以下内容:

find . -name *.foo -print | xargs echo

所以在您知道您的文件列表将是什么之前,您不会意外删除。

在 windows 下,它涉及更多一点。

这是我过去的经验,你必须不断搜索,删除几百个,然后使用资源管理器窗口右上角的搜索框再次搜索。

一段时间以来,我一直想给自己写一个小工具来处理这种情况,只是还没开始。

【讨论】:

  • 很简单,使用上述信息将允许您在名称参数中找到与文件模式匹配的文件(在您的情况下,我猜是 .svn)然后删除它们,如果那是您的希望做的,全部来自 Linux 命令行。 xargs 之后的第二部分可以替换为任何命令,例如:svn move 命令,正如问题的其他响应所建议的那样。
  • 没有。我不需要删除 .svn。我需要从目录中删除 54 000 个文件,但由于它是 54k 个文件,我无法执行此操作。
  • 上面的命令将列出这些文件(给定正确的文件掩码)并根据需要处理它们,这意味着您不必手动处理每个文件时间。
【解决方案2】:

我假设原始文件夹结构也在 svn 中。我要做的是回滚到原始结构并创建一个脚本,该脚本将为每个文件/目录发出[svn move][1]。这样做也会保留文件的提交历史记录,并且是重组源代码树的首选方法。

您还可以深入到您的文件夹结构中并以较小的块提交。你失去了一个可以回滚的原子提交的好处。大声思考,您可以通过分支来模拟这一点,重新组织分支(使用 svn move!)然后将分支合并回主干 - 请注意,您必须对分支中的文件/文件夹使用 svn move 否则 svn 不会能够帮助您进行合并。

【讨论】:

  • 我应该如何进行呢?比如: 1. 使用 svn move files toFolder 将那些 54k 文件移动到一个目录中。 2. 移动到后备箱??那么现在移动到主干的正确命令是什么。其次,我现在真的很想再花两天时间。
猜你喜欢
  • 2016-06-07
  • 1970-01-01
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 2011-01-06
  • 2013-04-01
相关资源
最近更新 更多