#gitignore #ignore #deleted #find #hidden #tool #cli-tool

app fts_gitignore_nuke

命令行工具,用于查找由 .gitignore 文件隐藏的文件,以便可以将其删除

5 个版本

0.1.5 2020 年 6 月 21 日
0.1.4 2020 年 6 月 15 日
0.1.2 2020 年 6 月 7 日
0.1.1 2020 年 6 月 7 日
0.1.0 2020 年 5 月 30 日

#3 in #deleted

每月 22 次下载

Unlicense OR MIT

85KB
467 代码行

fts_gitignore_nuke

fts_gitignore_nuke 是一个 Rust 编写的 CLI 工具,用于查找由 .gitignore 文件隐藏的文件和文件夹,以便可以将其删除。

这很有用,因为它允许一次性删除许多项目的构建输出。所有操作都是手动进行的,并且永远不会调用 git。这是因为 .gitignore 文件越来越多地用于 Git 之外的环境中。例如,Mercurial、perforce 或自定义工具可能会利用 .gitignore 文件。

为什么创建这个工具?

你可能想知道。为什么要创建这样一个工具呢?为什么不运行像 git clean -dX 这样的命令呢?这可以工作,但在某些情况下不行。fts_gitignore_nuke 的动机是一系列需求。

  1. 一次性删除多个源代码库中的文件。
  2. 在 Git、Mercurial 和 Perforce 代码库中删除文件。
  3. 在单体代码库中删除文件。
  4. 支持 Windows、macOS 和 Linux。

目前还没有现有的工具支持我的所有需求。我在家里有几十个 Git 代码库。在工作中,我有一个 Mercurial 单一代码库加上 Perforce。我希望有一个工具来统治它们。一个简单的命令行调用,可以在所有个人用例中工作。

更多信息请参阅我的博客文章: 使用 Rust 删除 Git 忽略的垃圾文件

安装

目前可以通过 fts_gitignore_nuke 通过 cargo install fts_gitignore_nuke 进行安装。

使用方法

编译 fts_gitignore_nuke 并在任何目录下运行。如果没有明确用户输入,则不会删除任何文件。

默认行为从当前目录开始,测试所有子目录。 .gitignore 文件按后进先出顺序堆叠并评估。

默认行为不包括父目录或 .gitignore 文件。可以通过 --include_parent_ignores--include_global_ignore 分别包含它们。

Deletes files hidden by .gitignore files

USAGE:
    fts_gitignore_nuke.exe [FLAGS] [OPTIONS]

FLAGS:
    -b, --benchmark                Auto-quit after walking directory
    -h, --help                     Prints help information
        --include-global-ignore    Include global .gitignore for matches
        --print-errors             Prints errors if encountered
        --print-glob-matches       Prints which glob and which .gitignore matched each path
    -V, --version                  Prints version information

OPTIONS:
    -d, --directory <directory>            Root directory to start search
        --min-file-size <min-file-size>    Minimum size, in bytes, to nuke [default: 0]
        --num-threads <num-threads>        Number of threads to use. Default: num physical cores
    -r, --root <root>                      Include .gitignores between root and target directory

支持

fts_gitignore_nuke 应该适用于 Windows、macOS 和 Linux。它主要是为了我个人的 Windows 使用场景编写的。可能需要稍作修改以支持不同的环境或工作流程。欢迎提交拉取请求!

性能

fts_gitignore_nuke 相对较快,默认情况下是多线程的。磁盘 I/O 是不可避免的瓶颈。

问题:我可以保留未添加到源控制的重要本地文件,例如私钥吗?

是的!

除了 .gitignore 文件外,fts_gitignore_nuke 还会查找 .gitnuke 文件。一个 .gitnuke 文件会被完全当作一个常规的 .gitignore 文件加载。预期用户行为是 .gitnuke 文件包含白名单模式(例如:!foo.privatekey!/LocalContent)用于文件和文件夹,这些文件和文件夹不是 Git 仓库的一部分,但不应该被清除。此类内容示例包括私钥、本地内容或昂贵的构建工件。

当匹配路径时,fts_gitignore_nuke 将遍历所有层级的 .gitnuke 文件,然后是所有 .gitignore 文件。这意味着每个 .gitnuke 文件都比每个 .gitignore 文件有更高的优先级。

一如既往,请在清除文件之前仔细检查要删除的文件列表。

依赖关系

~9MB
~164K SLoC