← Back to issue list

create a cache for the unpacked git repositories

View original Github issue

Metadata

Project
fetch-service
Number
#221
Type
issue
State
open
Author
dariuszd21
Labels
—
Created
Updated
Closed
—

Current evaluation

Request to cache/reuse unpacked git pack repositories so inspectors share one copy instead of unpacking per-inspector; addressed by PR #290 (commit 2ca0dfe) which unpacks once into CacheDir and shares via git-checkout-path annotation

Suggested action: close resolved

Reason: The stated problem ('every inspector has its own copy') no longer holds: commit 2ca0dfe 'refactor: only unpack git repos once (#290)' added unpackAndCheckout(f, ref, a.CacheDir(), sl) in inspectors/git/git_upload_pack.go, which unpacks/checkouts once into a session cache dir and publishes the path via the 'git-checkout-path' annotation. All git-based inspectors (charmcraft, snapcraft, rockcraft, bincraft, sourcecraft, gomod) now consume that shared path via ResponseStringAnnotation instead of calling git.UnpackObjects themselves, and git_unpack_objects has no remaining production callers outside that helper. The tracking issue fetch-service#276 was closed by that same PR. Note the remaining gap: unpackAndCheckout still uses os.MkdirTemp per fetch response, so there is no dedup across repeated responses for the same repo, but the issue's motivation is addressed.

Evaluated by: mr-cal-bot

Impact: 35 Quick Win: 15 Complexity: 45 Confidence: 85 Actionability: 80

Issue body

### What needs to get done Create a cache, that'll allow re-using `UnpackObjects(f io.ReadSeeker, dir string)` result on subsequent unpacking calls ### Why it needs to get done All the inspectors are unpacking the pack repository request simultaneously and instead of having one copy of the repository, every inspector has it`s own one. We should create a mechanism, that allows unpacking the content once and reusing it from that moment on on subsequent unpacking requests.

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 35
Quick Win: 15
Complexity: 45
Confidence: 85
Actionability: 80
close resolved Request to cache/reuse unpacked git pack repositories so inspectors share one copy instead of unpacking per-inspector; addressed by PR #290 (commit 2ca0dfe) which unpacks once into CacheDir and shares via git-checkout-path annotation
stealth/space-bunny-alpha
Impact: 65
Quick Win: 20
Complexity: 68
Confidence: 99
Actionability: 96
close resolved Git repository unpacking was deduplicated: merged PR #290 adds CacheDir and shared git-checkout-pack reuse, resolving repeated per-inspector repository copies.
stealth/space-bunny-alpha
Impact: 60
Quick Win: 20
Complexity: 60
Confidence: 99
Actionability: 85
close resolved Git repository unpack caching was requested to prevent every inspector from extracting its own copy; implementation already landed in commit 2ca0dfe through PR #290.
qwen/qwen3.6-35b-a3b
Impact: 55
Quick Win: 30
Staleness: 85
Complexity: 45
Confidence: 65
Support Request: 10
close stale Feature request to cache unpacked git repositories to avoid redundant unpacking by inspectors. Created 720 days ago, last activity 389 days ago, no maintainer triage.

Update history

Date Change
created

Related work

  • Duplicate Of: fetch-service#276 (confidence 92%)

    'Add git object unpack cache' covers the same work; its summary records it closed by PR #290 (commit 2ca0dfe).

  • Likely Fixed By: fetch-service#290 (confidence 90%)

    Merged commit 2ca0dfe 'refactor: only unpack git repos once' introduced CacheDir-based unpackAndCheckout and the shared git-checkout-path annotation.

Related issues

Issue Project State Summary Similarity
#276 Add git object unpack cache fetch-service closed Git upload-pack now unpacks objects once into the session CacheDir and annotates git-checkout-path for other inspectors. Merged as 2ca0dfe (PR #290).
82%