Crates.io | remotemob |
lib.rs | remotemob |
version | 1.2.1 |
source | src |
created_at | 2020-05-05 06:05:15.733693 |
updated_at | 2023-04-26 10:39:30.820407 |
description | Console tool for streamlining remote mobbing |
homepage | https://github.com/afajl/mob |
repository | |
max_upload_size | |
id | 237624 |
size | 104,337 |
Mob is a console tool to work in a remote mob (or pair) with git.
Install rust and run:
cargo install remotemob
Download the latest release and unpack it to somewhere in your PATH.
Note: It's safe to try mob! It prints all git commands it runs and if you decide that it's not for you can remove all traces.
mob start
creates a new feature branch or syncs the branch from the
previous driver.mob next
commits all changes to the feature branch and hands over to the next driver.mob done
stages all changes on the feature branch for commit on the base branch (normally main).Run mob
for help on more commands.
mob
from a repo?mob done
to remove the mob branch. Either commit the
changes or run git reset HEAD --hard
to discard changes.mob clean
to remove the mob-meta
branch.~/.mob
if you don't want to use mob
anymoreConfiguration local to you is stored in ~/.mob
. Configuration
for a repository is stored in an orphan branch named mob-meta
.
mob start
creates all configuration needed to run. It is always
safe to run mob clean
to remove the repository config and start
fresh.
Run mob status
Run mob start 7
You can add hooks to your configuration in ~/.mob
to notify you
when your turn is over or to take over screen sharing when you
start.
...
[hooks]
after_start="take_screen.sh"
after_timer="say 'mob next NEXT_DRIVER'"
Hooks are executed by a sh
and can contain two
variables:
CURRENT_DRIVER
: Always the name you configured in ~/.mob
NEXT_DRIVER
: Next driver or anyone
if you are the first in
a session. It is empty on all before_*
hooks.The available hooks are:
before_start
: Run as soon as possible when you run mob start
, before checking that it's your turn
or that your working directory is clean.
after_start
: Right after you've started a session with mob start
but before the timer started.
This is a good hook for taking over the screen.
after_timer
: Run when your turn ended. The first time you run
mob start
it tries to find commands to play a sound and show
a desktop notification to populate this hook.
before_next
: Before running mob next, NEXT_DRIVER
is not available.
after_next
: Before running mob next, NEXT_DRIVER
is either
a name or anyone
.
before_done
: Before the squashing and deleting branches.
after_done
: After done has been run, NEXT_DRIVER
is not available.
mob
uses an orphan branch called mob-meta
to save session
state and settings. You can view the session content with mob status [-r]
and delete it with 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",
},
}
The session can be in 3 different states:
Inspiration for this tool comes from Remote mob programming and their tool mob written in Go.
I did this rewrite to:
To find other tools look at the mob programming timer tag on github