如何自动删除Mercurial工作树中的所有.orig文件?

rkj*_*rkj 55 mercurial dvcs purge

在合并期间,mercurial会为任何未解析的文件留下.orig文件.但在手动解决问题并将文件标记为正确后,它不会删除.orig文件.可以通过某些命令自动删除吗?

我在Mac上工作,所以我可以使用类似的东西:

find . -iname '*.orig' -exec rm '{}' ';'
Run Code Online (Sandbox Code Playgroud)

和它或别的什么,但我宁愿使用类似hg清理的东西......

更新:

从一段时间以来,Purge扩展与Mercurial捆绑在一起并很好地解决了这个问题.

Mar*_*ler 68

就个人而言,我用

$ rm **/*.orig
Run Code Online (Sandbox Code Playgroud)

如果我厌倦了.orig文件.运行后,这适用于Zsh和Bash 4 shopt -s globstar.

但是如果你使用另一个shell或想要一个内置的解决方案,那么也许你会喜欢清除扩展(链接更新2016-08-25).这使您可以删除所有未跟踪的文件

$ hg purge
Run Code Online (Sandbox Code Playgroud)

您可以删除所有未跟踪和忽略的文件

$ hg purge --all
Run Code Online (Sandbox Code Playgroud)

使用的一个优点hg purge是,这也将清除删除文件后变空的目录.该rm命令行会见好就收的空目录后面.

  • 我为什么要这样做呢?是因为这只适用于像Zsh这样理解`**`的shell吗?我亲自*说*因为这是我自己使用的,然后我以清除扩展的形式给出了一个通用的,跨平台的答案. (6认同)
  • @Keyo:`rm`命令行确实递归,这就是`**`部分的目的.删除`.orig`文件后,它不会删除变空的目录.这是使用`hg purge`的一个小优势.目录很少出现在我的项目中,所以我以前没想过这个. (2认同)

小智 32

顺便说一句.find实用程序有一个动作,-delete 所以你只能键入:

find <path-to-files> -name '*.orig' -delete


mli*_*ner 13

如果您只是想删除.orig文件,并且您碰巧在Windows计算机上,以下似乎运行良好:

D:\workspace>hg purge -I **/*.orig --all
Run Code Online (Sandbox Code Playgroud)

这将删除以.orig结尾的所有未跟踪文件,但不会删除其他未跟踪文件,因为其他答案会.

您可以在运行它之前测试它,也可以将--print标志放入其中.