repo

A command line tool to jump between repositories with ease

MIT License

Stars
2

Features

  • Fuzzy matching - can match paths partially.
  • Shell integration - Works with zsh, bash and fish.
  • Output formats - supports plain and nested json output.
  • Respects gitignore - skips nested repositories that are ignored by git.
  • Configurable - you can add multiple roots and control scan depth for each.

Demo

Installing

Download latest release for your system and put it in the path.

Outputs

Command Output Type Description
repo cmp Text repository names separated by space
repo cmp -f/--full Text full repository paths separated by newline
repo cmp -j/--json JSON paths and other metadata as a list
repo cmp -t/--tree JSON paths and other metadata as a tree

Shell integration

You can run repo sh to see the setup instructions for your current shell if supported. Supported shells are zsh, bash and fish.

Usage

You can jump around your repos with -

% z fo/ba
% /foo/bar
% z p/os/vsc
% ~/Projects/oss/vscode-repo

Where z can be any letter you bind. Hitting the tab will show you possible locations.

Editor Integration

Configuration

You can customize the behavior of repo by creating a configuration file named repo.yml.

[!TIP] If no repo.yml file exists, the tool will search your home directory by default.

1. Initializing Config

To initiate a blank configuration file, execute the following command:

repo init

This creates the repo.yml file in your system's default configuration directory.

2. Specifying Root Paths

[!WARNING] Ensure paths are specified using the correct path syntax for your operating system.

Define the directories you wish to include in the search. Each path can optionally specify a maximum traversal depth:

roots:
  # Search all Git repositories within this directory:
  - path: /home/mohit/Projects

  # Restrict the search to a depth of 2 levels within this directory:
  - path: /home/mohit/Work
    depth: 2