#mob #remote #branch #console #session #tool #git

bin+lib remotemob

简化远程协作的命令行工具

29 个版本 (7 个稳定版)

1.2.1 2023年4月26日
1.2.0 2022年11月6日
1.1.2-beta.22022年4月29日
1.1.1 2021年9月30日
0.1.6-beta.22020年5月12日

命令行工具 中排名 723

Download history 6/week @ 2024-03-31

每月下载量 71

MIT/Apache

72KB
2K SLoC

mob

Mob 是一个命令行工具,用于使用 git 进行远程协作(或配对)。

  • 快速交接驾驶员代码
  • 记住驾驶员的顺序
  • 跟踪状态(工作、等待下一步、停止)以消除冲突和丢失工作的风险
  • 使用任何分支作为基础

mob screen

安装

Cargo

安装 rust 并运行

cargo install remotemob

手动

下载最新版本并解压缩到您的 PATH 中的某个位置。

使用方法

注意:尝试 mob 是安全的!它打印出它运行的所有 git 命令,如果您决定它不适合您,可以 移除所有痕迹

  • mob start 创建一个新的功能分支或将分支从上一个驾驶员同步。
  • mob next 将所有更改提交到功能分支并将交接给下一个驾驶员。
  • mob done 将功能分支上的所有更改暂存起来,以在基本分支(通常是 main)上提交。

mob graph

运行 mob 获取更多命令的帮助。

常见问题解答

如何从仓库中移除所有 mob 的痕迹?

  1. 运行 mob done 以移除 mob 分支。要么提交更改,要么运行 git reset HEAD --hard 以丢弃更改。
  2. 运行 mob clean 以移除 mob-meta 分支。
  3. 如果您不想再使用 mob,请删除 ~/.mob

配置存储在哪里?

您本地的配置存储在 ~/.mob 中。仓库的配置存储在一个名为 mob-meta 的孤立分支中。
mob start 会创建运行所需的所有配置。始终安全地运行 mob clean 以删除仓库配置并重新开始。

如何显示当前状态?

运行 mob status

工作时间设置为 15 分钟,但我们必须在 7 分钟内停止会议

运行 mob start 7

钩子

您可以在 ~/.mob 中添加钩子以在轮次结束时通知您或开始时接管屏幕共享。

...
[hooks]
after_start="take_screen.sh"
after_timer="say 'mob next NEXT_DRIVER'"

钩子由 sh 执行,可以包含两个变量

  • CURRENT_DRIVER:始终是您在 ~/.mob 中配置的名称
  • NEXT_DRIVER:下一个驾驶员或 anyone 如果您是会话中的第一个。在所有 before_* 钩子中为空。

可用的钩子包括

  • before_start:在运行 mob start 后尽可能快地运行,在检查是否轮到您或您的工作目录是否干净之前。
  • after_start:在用 mob start 开始会话后立即运行,但在计时器开始之前。这是一个接管屏幕的好钩子。
  • after_timer:当您的轮次结束时运行。第一次运行 mob start 时,它会尝试找到播放声音和显示桌面通知的命令以填充此钩子。
  • before_next:在运行 mob next 之前,NEXT_DRIVER 不可用。
  • after_next:在运行 mob next 之前,NEXT_DRIVER 要么是一个名称,要么是 anyone
  • before_done:在合并和删除分支之前。
  • after_done:在运行 done 后,NEXT_DRIVER 不可用。

工作原理

mob 使用一个名为 mob-meta 的孤儿分支来保存会话状态和设置。您可以使用 mob status [-r] 查看会话内容,并使用 mob clean 删除它。

Session {
    drivers: Drivers(
        [
            "Paul",
            "Leo",
            "Ella",
        ],
    ),
    branches: Branches {
        branch: "mob-session",
        base_branch: "main",
    },
    settings: Some(
        Settings {
            commit_message: "mob sync [skip ci]",
            work_duration: 10,
        },
    ),
    state: Working {
        driver: "Ella",
    },
}

会话可以处于 3 种不同的状态

mob states

灵感和其他工具

此工具的灵感来自 远程 mob 编程 及其用 Go 编写的工具 mob

我这样做是为了

  • 记住驾驶员的顺序
  • 使用任何分支作为基本分支,而不仅仅是 master 或 main
  • 了解状态,这样我们就得到漂亮的警告而不是 git 冲突和丢失引用。
  • 当然... rust ;)

要查找其他工具,请查看 github 上的 mob 编程计时器标签

依赖关系

~17–30MB
~530K SLoC