Skip to content

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

License

Notifications You must be signed in to change notification settings

liuyibo/expmonkey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’ 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 [email protected]: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.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages