cowtree copies gitignored files between Jujutsu workspaces using
copy-on-write reflinks. This is useful for carrying workspace-local files such
as build outputs, dependency directories, and environment files into another
workspace without making full copies.
Only the Jujutsu backend is implemented. The Git commands are placeholders.
Build and install the binary from this checkout:
cargo install --path .The jj executable must be available on PATH.
Run cowtree from the root of the source workspace, the directory containing
.jj. NAME and --source are Jujutsu workspace names; paths are used only
where explicitly noted.
Create a workspace at NEW_WORKSPACE_PATH from REVISION, then populate it
with ignored files from the current workspace:
cowtree jj create <NAME> <NEW_WORKSPACE_PATH> --revision <REVISION> --source <SOURCE>
For example:
cowtree jj create feature ../feature --revision main --source defaultPopulate an existing workspace with ignored files from the current workspace:
cowtree jj populate <NAME> --source <SOURCE>
For example:
cowtree jj populate feature --source defaultUse cowtree --help or cowtree jj <COMMAND> --help for the complete CLI
reference.
cowtree reads .gitignore from the current workspace, resolves the source
and destination by their registered Jujutsu workspace names, and reflinks the
ignored files into the destination while preserving their relative paths.