Out of curiosity, is there an equivalent to git cat-file
with git annex
?
The motivation is our usage of Bazel as a build system, which during test enforces hermiticity, and thus is very persnickity about modifying your workspace (e.g., the Git repository) while the test is being run, and usually isolates execution to a chroot'd sandbox of sorts.
Ideally, the workflows I'd like are:
A. Developer
- Clones repository.
- Inits
git annex
, and doesgit annex get .
to fetch all required files.
- Inits
- Runs
bazel test //repo:my_test
, which will symlink the existing large file into the sandbox, and run without a hitch.
- Runs
B. Tentative Contributor
- Clones repository. Pokes around.
- Runs
bazel test //repo:my_test
. Since the large file does not exist, under the hoodgit annex cat-file
is called to directly add the file to sandbox (possibly caching it somewhere, such thatgit annex get
will use the already fetch'd file).
- Runs
May I ask if this doable with simple visible commands? If not, is there a way to achieve this that is special remote-agnostic?
Think of
git annex get
as more likegit pull
thangit cat-file
. It necessarily needs to modify the repository to get the contents of files.What about making a temporary clone of the git repository that's writable in the sandbox?