Crates.io | git-prole |
lib.rs | git-prole |
version | 0.5.2 |
source | src |
created_at | 2024-10-12 20:42:49.613831 |
updated_at | 2024-10-22 20:41:56.320432 |
description | A git-worktree(1) manager |
homepage | |
repository | https://github.com/9999years/git-prole |
max_upload_size | |
id | 1406862 |
size | 356,277 |
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.
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).