1 个不稳定版本

0.2.1 2024年6月1日
0.2.0 2024年5月2日
0.1.4 2023年12月3日
0.1.2 2023年11月29日
0.0.4 2023年11月25日

#427开发工具

Download history 48/week @ 2024-04-26 146/week @ 2024-05-03 7/week @ 2024-05-17 3/week @ 2024-05-24 172/week @ 2024-05-31 11/week @ 2024-06-07 3/week @ 2024-06-14 1/week @ 2024-06-28 10/week @ 2024-07-05 97/week @ 2024-07-26 9/week @ 2024-08-02

每月106 次下载

MIT 许可证

99KB
2K SLoC

magoo magoo

Build Badge Version Badge License Badge Issue Badge

这个 magoo 是 Magoo,它可以帮助你轻松管理 git 子模块,就像 npmcargo,但适用于子模块。

添加子模块很简单,但你是否曾经遇到过

  • 如何更新子模块?
  • 如何删除子模块?
  • 我在更新子模块后,如何让同事知道如何更新他们的子模块?

magoo 通过为我们运行 git 命令来帮助我们。它会从 git 仓库本身获取所有相关信息。无需额外的文件,并且 magoo 可以直接在所有带有子模块的 git 仓库中工作。

magoo 不喜欢管道。请简单地让您的管道检查子模块(如果需要递归的话)。例如,如果您正在使用 GitHub Actions

- uses: actions/checkout@v4
  with:
    submodules: recursive

安装 magoo

magoo 作为 CLI 工具

cargo install magoo

magoo 作为库

magoo 添加为依赖项

cargo add magoo

更多信息请参阅 https://docs.rs/magoo

使用 magoo

magoo 使用子进程运行 git 命令,因此您必须在系统上安装 git。默认情况下,magoo 会检查是否支持 git 版本。要手动打印支持哪些版本,请运行

magoo status --git

不支持版本的 magoo 也可能正常工作,您可以使用 --allow-unsupported 标志(注意它需要放在子命令之前)来让 magoo 知道。

magoo --allow-unsupported status

添加子模块

magoo install URL PATH

(运行 magoo install --help 可查看完整选项列表)

添加子模块的参数与 git submodule add 非常相似

magoo 添加子模块需要知道以下信息。

参数 描述 默认值
URL 类似于 https://github.com/owner/repo 的 Git URL。SSH 和相对 URL 也可以使用。有关详细信息,请参阅 git submodule add URL 是必需的
PATH 模块应存在的路径 顶级目录中与子模块仓库同名的目录
BRANCH 当您运行 magoo update 时要更新的分支 无(HEAD
NAME 用于识别子模块的其他命令的名称 PATH 相同

建议始终指定 BRANCH。默认情况下,Git 会使用 HEAD 分支,这通常不是您想要的。

添加子模块时不会递归克隆。如果需要,可以在 add 后运行 magoo install 来克隆递归子模块。

初始化/拉取子模块

magoo install

magoo 会确保子模块被克隆/更新到索引中存储的提交。每次您从其他人那里拉取更改时,都应该运行 magoo install,以防它们已被更新。它还会删除其他人删除的子模块(通过运行 status --fix,见下文)。

默认情况下,会递归安装子模块,您可以使用 --no-recursive 仅安装顶级仓库指定的子模块。

显示子模块状态

magoo status [--long] [--fix]

magoo 会显示它所知道的所有关于当前仓库中的子模块的信息。

使用 --fix 选项可以将子模块状态恢复到 magoo 所期望的稳定状态。如果 Git 文件被手动修改或通过运行单独的 git 命令,或因远程变更,可能会导致状态不一致。

magoo 会通过取消初始化子模块(如果可能)或删除子模块来修复状态。

更新子模块

magoo update

这会指示 magoo 将所有子模块更新为与远程 BRANCH(在添加子模块时指定)同步。更多信息请参阅 magoo update --help

您还可以

  • 更新一个子模块到最新版本
    magoo update NAME
    
  • 更改子模块的分支和/或 URL
    magoo update NAME --branch BRANCH --url URL
    

删除子模块

magoo remove NAME

magoo 可以使用此单条命令删除子模块的所有痕迹。

注意:Git 的新版本允许您使用 git rm 删除子模块。然而,它不会删除 .git/modules 中的内容。 magoo 会删除这些内容。

依赖

~2–12MB
~143K SLoC