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!
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.
Before you embark on this quest, ensure you have the following relics:
- Python 3.x
- Git
- Optional:
fzf
for an enhanced soothsaying interface
Invoke ExpMonkey into your realm with these ancient incantations:
- Conjure the Python package:
pip3 install expmonkey
- (Optional) Weave
em-init-script
into your shell's tapestry for autocompletion and arcane abilities:
echo 'eval "$(em-init-script)"' >> ~/.bashrc
- (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.
Harness the power of ExpMonkey as you navigate the treacherous terrain of experiments:
em clone git@github.com:megvii-research/RevCol.git
em ls -as
em cp <base-branch-name> <new-branch-name>
em cd <new-branch-name>
# Enchant with your changes
em push
ExpMonkey's eyes gleam when spotting a .
. Behold the magic:
Create an empty experiment:
em empty <branch-name>
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.
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
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
Cast away an unwanted branch:
em rm <branch-name> # banish branch
em rm . # banish current branch
Send your experiment into the vast unknown:
em push # launch it skyward
Alter the name of your journey:
em mv <current-branch-name> <target-branch-name>
Witness the divergence between realms:
em diff <branch1> <branch2>
This project is a tome of knowledge, open to all seekers under the MIT License.