Skip to content

remotemobprogramming/intellij-mob

Repository files navigation

Swift git handover with mob IntelliJ plugin

build Quality Gate Status Version Downloads rating

mob Logo

Swift git handover and timer with mob IntelliJ plugin, it useful for Remote Mob Programming.

  • mob IntelliJ plugin is a port of mob command line tool
  • mob is the fast way to handover code via git
  • mob keeps your master branch clean
  • mob creates WIP commits on the mob-session branch
  • mob notifies you when it's time to handover
  • mob squash commits at done session and set Co-authored-by: trailer in commit message

How to install

There are three ways to install.

Stable channel of JetBrains Plugins Repository

  1. Open Settings(Windows, Linux) / Preferences(macOS)... | Plugins
  2. Search "Mob" and install

EAP channel of JetBrains Plugins Repository

Alpha, Beta, and RC versions will only be released on EAP channel.

  1. Open Settings(Windows, Linux) / Preferences(macOS)... | Plugins | ⚙️ | Manage Plugin Repositories...
  2. Add https://plugins.jetbrains.com/plugins/eap/list
  3. Search "Mob" and install

Download from plugin page

  1. Open Mob - plugin for IntelliJ IDEs page and download latest zip file
  2. Open Settings(Windows, Linux) / Preferences(macOS)... | Plugins | ⚙️ | Install Plugin from Disk...
  3. Select downloaded zip file to install plugin

How to use

Git | Mob | Start Mob Programming as Typist... (shortcut: ALT+M, S)

menu

start dialog

Click OK, so switched to a separate branch. Start mob programming!

When handover to the next person,

Git | Mob | Next : Handover to Next Typist... (shortcut: ALT+M, N)

next dialog

Continue with "Start" and handover to the next person with "Next". Continue with "Start" and handover to the next person with "Next". Continue with "Start" and handover to the next person with "Next". ...

When you're done,

Git | Mob | Done : Finish Mob Session... (shortcut: ALT+M, D)

After confirm in a dialog, get your changes into the staging area of the master branch. Please commit & push into base branch yourself.

How does it work

  • Start Mob Programming as Typist : creates branch mob-session and pulls from origin/mob-session
  • Next : pushes all changes to origin/mob-sessionin a mob next [ci-skip] commit
  • Done : squashes all changes in mob-session into staging of master and removes mob-session and origin/mob-session
  • Set "Timer" in start dialog : start a specific minute timer, notify by a balloon if expired
  • Select "Also activates screenshare in Zoom" in start dialog : start screen sharing in Zoom (requires Zoom configuration)
  • Select "Stay in WIP branch after executing 'Next' and checkout base branch" in next dialog : after handover code, stay on mob session branch
  • Resets Any Unfinished Mob Session : deletes mob-session and origin/mob-session

Zoom Screen Share Integration

The "Also activates screenshare in Zoom" feature uses the Zoom keyboard shortcut "Start/Stop Screen Sharing". This only works if you

  • make the shortcut globally available (Zoom > Preferences > Keyboard Shortcuts), and
  • keep the default shortcut at CMD+SHIFT+S (macOS)/ ALT+S (Windows, Linux).
  • setting under System Preferences required on macOS Catalina (or later?); Security & Privacy -> Privacy tab -> Accessibility, and add your IntelliJ Platform Based IDEs .app

More tips on setting up Zoom for effective screen sharing.

How to configure

Open Settings(Windows, Linux) / Preferences(macOS) | Tools | Mob

preferences

Settings are saves to .idea/mob.xml.

If you want a voice notification when the timer expires, open Notifications settings and turn on "Read aloud" on "Mob Timer" row (macOS only).

notification settings

There are two ways to open Notification settings.

  • Preferences... | Appearance & Behavior | Notifications
  • Event Log window | 🔧

Troubleshoot

To see idea.log, in JetBrains Toolbox, open Settings | Configuration, and click "Show logs directory" button.

If necessary, get the trace level log. Open Help | Diagnostic Tools | Debug Log Settings…, and input #com.nowsprinting.intellij-mob:trace.

Milestones

1.1

  • Good looking timer widget on statusbar
  • Pause/resume timer action launch from statusbar

1.x

  • Integration tests
  • Refactor: dialogs uses DialogWrapper
  • Refactor: tests about GitRepository
  • Input validation on dialogs
  • Support multiple repository
  • Can rollback on "done" by splitting the done process into two phases

How to contribute

Open an issue or create a pull request.

Credits

Original mob developed and maintained by Dr. Simon Harrer.

Original and plugin logo designed by Sonja Scheungrab.

Port to IntelliJ plugin by Koji Hasegawa