commercialhaskell/stack

Optionally cache Git object files in Pantry directory

Open

#4758 aperta il 21 apr 2019

Vedi su GitHub
 (2 commenti) (1 reazione) (0 assegnatari)Haskell (848 fork)batch import
help wantednewcomer friendlytype: discusstype: enhancementtype: performance

Metriche repository

Star
 (4060 star)
Metriche merge PR
 (Merge medio 14h 21m) (12 PR mergiate in 30 g)

Descrizione

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.

Guida contributor