commercialhaskell / commercialhaskell/stack

Optionally cache Git object files in Pantry directory

Open
#4,758 2 comments 1 reaction 0 assignees View on GitHub
help wanted newcomer friendly type: discuss type: enhancement type: performance
Dominant language
Haskell
Stars
4.1k
Forks
850
Avg merge
10h 37m
Merged PRs (30d)
4

Description

Setting milestone to P1 to ensure we decide on this before the Stack 2.0 release.

I was unaware until recently of the `GIT_OBJECT_DIRECTORY` environment variable, described at https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables. IIUC, we can set this environment variable to a shared directory inside the `pantry` directory, and cache repository information across usages.

Advantages:

* Don't need to reclone the entire history of a repo when switching to a slightly later commit
* The current inefficiency of using multiple subdirectories from a single repo will mostly disappear

Disadvantages:

* Adds lots of additional storage

The disadvantage can be addressed with a future feature of some `gc` command to Stack, which is actually the topic of a likely GSoC project.

CC @borsboom and @qrilka for feedback.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.