Skip to content

amtoine/nu-git-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nu-git-manager

A collection of Nushell tools to manage git repositories.

Table of content

πŸ’‘ what is nu-git-manager [toc]

like ghq, nu-git-manager aims at being a fully-featured repository manager, purely written in Nushell.

it provides two main modules:

  • nu-git-manager itself which ships the main gm command
  • nu-git-manager sugar which exports a bunch of Git-related tools, e.g. to help use the gh command or augment the capabilities of git

πŸ”— requirements [toc]

  • Nushell 0.85.1+
    • with Cargo and cargo install nu
  • git 2.34.1
    • with Pacman and pacman -S extra/git
    • with Nix and nix run nixpkgs#git
  • gh (optional) 2.29.0 (used by sugar gh)
    • with Pacman and pacman -S community/github-cli
    • with Nix and nix run nixpkgs#gh

♻️ installation [toc]

git clone https://github.com/amtoine/nu-git-manager
  • activate the nupm module with use nupm
  • install the nu-git-manager package
nupm install --path --force nu-git-manager

βš™οΈ usage [toc]

in your config.nu you can add the following to load nu-git-manager modules:

# config.nu

# load the main `gm` command
use nu-git-manager [gm, "gm clone", "gm list", "gm root", "gm remove"]

# the following are non-essential modules
use nu-git-manager sugar git                # augmnet Git with custom commands
use nu-git-manager sugar gh                 # load commands to interact with *GitHub*
use nu-git-manager sugar gist               # load commands to interact with *GitHub* gists

then you have access to the whole nu-git-manager suite πŸ₯³

πŸ™ getting help [toc]

do not hesitate to run one of the following to have more information about what nu-git-manager has to offer πŸ‘

help gm
# or
gm
help modules git
help modules gh
help modules gist
# or
gist

❗ some ideas of advanced (?) usage [toc]

everytime i open a terminal, i use Tmux to manage sessions, switch between them, detach and reattach, quite a BLAZZINGLY FAST workflow for my taste 😏

to achieve this, i use the tmux-sessionizer.nu script from the nu-goat-scripts package, again installed with Nupm πŸ‘Œ

then, in my Tmux config, i have a binding to

  1. list all my Git repositories
  2. fuzzy-pick one of them with the main command of tmux-sessionizer.nu
  3. create or reattach to the session associated with the repository
# ~/.config/tmux/tmux.conf

NUPM_HOME="~/.local/share/nupm"
TMUX_SESSIONIZER="$NUPM_HOME/scripts/tmux-sessionizer.nu"

bind-key -r t display-popup -E "nu --commands '
    use $NUPM_HOME/modules/nu-git-manager *;\
    $TMUX_SESSIONIZER (gm list --full-path) --short\
'"