8 releases (4 breaking)

0.5.3 Nov 18, 2024
0.5.2 Oct 22, 2024
0.4.0 Oct 21, 2024
0.3.0 Oct 20, 2024
0.1.1 Oct 12, 2024

#2326 in Command line utilities

Download history 184/week @ 2024-10-07 375/week @ 2024-10-14 549/week @ 2024-10-21 3/week @ 2024-11-04 169/week @ 2024-11-18 5/week @ 2024-11-25

177 downloads per month

MIT license

220KB
5K SLoC

git-prole

Crates.io
Packaging status
User manual

A git-worktree(1) manager.

A normal Git checkout looks like this:

my-repo/
  .git/
  README.md
  ...

Worktrees allow you to associate multiple checkouts with one .git directory, like this:

my-repo/
  .git/      # A bare repository
  main/      # A checkout for the main branch
    README.md
  feature1/  # A checkout for work on a feature
    README.md
  ...

This makes it a lot easier to keep a handful of branches 'in flight' at the same time, and it's often handy to be able to compare your work against a local checkout of the main branch without switching branches.

Unfortunately, the built-in git worktree commands don't make it very easy to set up repositories with this layout. git-prole exists to paper over these deficiencies.

Features

  • Clone a repository into a worktree checkout with git prole clone URL [DESTINATION].

  • Convert an existing repository into a worktree checkout with git prole convert.

  • Add a new worktree with git prole add.

    • git prole add feature1 will create a feature1 directory next to the rest of your worktrees; git worktree add feature1, in contrast, will create a feature1 subdirectory nested under the current worktree.

    • Branches created with git prole add will start at and track the repository's main branch by default.

    • git prole add will copy untracked files to the new worktree by default, making it easy to start a new worktree with a warm build cache.

    • git prole add can run commands when a new worktree is created, so that you can warm up caches by running a command like direnv allow.

    • git prole add can perform regex substitutions on branch names to compute a directory name, so that you can run git prole add -b myname/team-1234-my-ticket-with-a-very-long-title and get a directory name like my-ticket.

    • git prole add respects the -c/--create option (to match git switch); git worktree add only allows -b (with no long-form option available).

Dependencies

~14–26MB
~389K SLoC