Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add https://mob.sh remote handover tool to common git config #332

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

carpeliam
Copy link
Contributor

Proposal

Adopt mob.sh within workstation-setup as a tool for facilitating handover between engineers during a remote pairing session.

Background

Of the two primary forms of pairing (driver/navigator, ping pong), ping pong pairing does a good job of keeping both members of a pair active at the keyboard. Since the pandemic and the shift to remote pairing, it's become more difficult to rotate quickly, and many pairs have moved away from ping pong pairing. A few different tools have been created (both inside and outside of Labs) to help ease the pain of "handover" (ie, the process of shipping the current state of the code to the other person). mob.sh is the most mature tool that I've seen that helps minimize the cost of handing off code between drivers in a remote pairing situation.

How does it work?

mob.sh manages the entire flow from creating a temporary git branch for development, to pushing code to that branch, to pulling the latest code, to preparing/rebasing/squashing all commits for commit/merge to a main trunk branch, to cleaning up temporary branches after they're no longer necessary. The process is as follows, assuming that two developers Carola and Maria are starting from a main branch:

# Carola
main $ mob start
mob/main $ echo "hello" > work.txt
mob/main $ mob next

# Maria
main $ mob start
mob/main $ cat work.txt # shows "hello"
mob/main $ echo " world" >> work.txt
mob/main $ mob next

# Carola
mob/main $ mob start
mob/main $ cat work.txt # shows "hello world"
mob/main $ echo "!" >> work.txt
mob/main $ mob done
main $ git commit -m "create greeting file"
main $ git push

The main commands used in the above flow are mob start, mob next, and mob done. Each one of these commands is making a few calls to git underneath the hood, and managing its state. (There's a video of this in action on the mob.sh website, if you're curious about how it works.) The final step, mob done, will do a soft reset to the state before the first mob start was run, rebasing as necessary on the parent branch, so as to put the pair in good shape to run git commit.

Altogether, mob.sh is a fairly lightweight CLI tool that helps to minimize the friction of remote handover, thereby creating an environment in which pairs or mobs can adopt ping pong pairing more easily.

@carpeliam carpeliam requested review from joemoore and d-lorenc March 28, 2024 17:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant