Skip to main content

A git worktree-based CLI tool for efficient management and navigation of multiple isolated experiments in parallel development workflows

Project description

๐Ÿ’ ExpMonkey: Unleash Your Experiments with Git Magic! ๐ŸŒ

Welcome to ExpMonkey, the nimble experiment management tool that transforms the way you handle your research and development projects. By harnessing the power of git worktrees, ExpMonkey offers a command-line sanctuary for your branches, treating each one as a unique adventure in the jungle of innovation. Ready to swing from experiment to experiment with the grace of a seasoned primate? ๐ŸŒฟ Let's dive in!

๐ŸŒŸ Spotlight Features

Embark on a journey with ExpMonkey and discover a world where managing multiple experiments feels like a walk in the park:

  • ๐ŸŒ Parallel Universe Workflow: Each git branch becomes an alternate reality, with its own directory to tinker in. Work on multiple fronts without ever tangling your vines.

  • ๐ŸŒ Jungle Gym Navigation: Leap between branches with a simple command. It's like having a map of the entire jungle at your fingertips.

  • ๐ŸŒ Git Sorcery Enhanced: ExpMonkey casts a spell on the standard git rituals, streamlining branch antics and conjuring up tools specifically for the experimental alchemist.

  • ๐ŸŒ Branch Alchemy: Transmute, clone, and compare experiments with the dexterity of a monkey's tail, all thanks to ExpMonkey's clever branch wizardry.

  • ๐ŸŒ Chant Autocompletion: Invoke the spirits of speed and precision with our autocompletion incantations, banishing typos to the shadow realm.

  • ๐ŸŒ Fuzzy Oracle Integration: Consult the fzf oracle for visions of branches and commits, selecting your path with the clarity of a shaman's trance.

๐Ÿ“œ Prerequisites

Before you embark on this quest, ensure you have the following relics:

  • Python 3.x
  • Git
  • Optional: fzf for an enhanced soothsaying interface

๐Ÿ›  Installation: Summoning ExpMonkey

Invoke ExpMonkey into your realm with these ancient incantations:

  1. Conjure the Python package:
pip3 install expmonkey
  1. (Optional) Weave em-init-script into your shell's tapestry for autocompletion and arcane abilities:
echo 'eval "$(em-init-script)"' >> ~/.bashrc
  1. (Optional) Summon fzf for a mystical user experience:
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

Consult the fzf grimoire for more details.

๐Ÿ“— Grimoire of Usage

Harness the power of ExpMonkey as you navigate the treacherous terrain of experiments:

๐ŸŒฑ Sprout a New Repository

em clone git@github.com:megvii-research/RevCol.git

๐Ÿ“œ Parchment of Experiments

em ls -as

๐ŸŒฟ Branch Out with Forks

em cp <base-branch-name> <new-branch-name>

๐Ÿš€ Propel Your New Creation

em cd <new-branch-name>
# Enchant with your changes
em push

๐Ÿง™โ€โ™‚๏ธ Command Incantations

The Dot Trick ๐Ÿ’๐Ÿ’๐Ÿ’

ExpMonkey's eyes gleam when spotting a .. Behold the magic:

๐Ÿ•ณ๏ธ Conjure from the Void

Create an empty experiment:

em empty <branch-name>

๐Ÿ” Scrying List

Peer into the branches:

em ls # unveil local branches
em ls <filter-regex> # filter through local branches
em ls -as # reveal remote branches with status

em ls -as illuminates branches with enchanted hues:

Color Meaning
Red Distant Lands (Remote)
White Uncharted (Not Checked out)
Blue Whispering Winds (Not Pushed)
Yellow Altered Realms (Modified)
Normal Harmony (Clean)

em ls is a swift spell, while em ls -as consults distant spirits, requiring more time.

๐ŸŒŸ Starry Copy

Craft a new branch from existing strands of fate:

em cp <Tab> <target-branch-name> # divine local branches
em cp .r<Tab> <target-branch-name> # divine all branches
em cp <base-branch-name> .<Tab> # scribe as base-branch-name
em cp .<Tab> <target-branch-name> # scribe as current-branch-name
em cp . <target-branch-name> # duplicate current branch

๐ŸŒ€ Portal to Another Branch

Step into another experiment:

em co <Tab> # divine local branches
em co .r<Tab> # divine all branches
em co <branch-name> # step through the portal

๐Ÿ—‘๏ธ Banish an Experiment

Cast away an unwanted branch:

em rm <branch-name> # banish branch
em rm . # banish current branch

๐ŸŒŒ Push to the Cosmos

Send your experiment into the vast unknown:

em push # launch it skyward

๐Ÿ“› Rename Your Destiny

Alter the name of your journey:

em mv <current-branch-name> <target-branch-name>

๐Ÿ”ฎ Gaze into Differences

Witness the divergence between realms:

em diff <branch1> <branch2>

๐Ÿ“œ License

This project is a tome of knowledge, open to all seekers under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

expmonkey-0.0.35.tar.gz (12.4 kB view hashes)

Uploaded Source

Built Distribution

expmonkey-0.0.35-py3-none-any.whl (11.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page