1
0
Fork 0
mirror of https://github.com/imjasonh/git-k8s synced 2026-07-18 15:05:45 +00:00

Implement PVC-backed Git workspace cache (design-pvc-workspace.md)

Add pkg/workspace.Manager that provides Acquire/Release semantics for Git
repos. When GIT_CACHE_DIR is set and a GitRepository has spec.cache.enabled,
controllers use on-disk bare clones with incremental fetch; otherwise they
fall back to the existing in-memory clone behavior.

Key changes:
- New pkg/workspace package with Manager, Workspace, GC, Deepen, and
  context-based injection (WithManager/GetManager)
- GitRepository API gains spec.cache (CacheConfig) and status.cache
  (CacheStatus) with deepcopy and CRD schema updates
- Push, sync, and resolver reconcilers now use workspace.Acquire/Release
  instead of inline memory.NewStorage + git.CloneContext
- Shallow clone by default; sync/resolver deepen as needed for merge-base
- New Prometheus metrics: workspace_acquire_duration_seconds,
  workspace_cache_hit_total, workspace_cache_miss_total
- Deployment manifests include commented-out PVC configuration
- Comprehensive unit tests for workspace package (21 tests)
- E2E tests for cache-free and cache-enabled push flows

https://claude.ai/code/session_01NULGxaCLPMT1yDVEAsffc5
This commit is contained in:
Claude 2026-03-17 15:20:57 +00:00
parent 831132d826
commit a1a4142976
No known key found for this signature in database
22 changed files with 1374 additions and 69 deletions

View file

@ -18,6 +18,7 @@ import (
gitv1alpha1 "github.com/imjasonh/git-k8s/pkg/apis/git/v1alpha1"
gitclient "github.com/imjasonh/git-k8s/pkg/client"
"github.com/imjasonh/git-k8s/pkg/reconciler/internal"
"github.com/imjasonh/git-k8s/pkg/workspace"
)
var (
@ -52,6 +53,7 @@ func NewController(ctx context.Context, cmw configmap.Watcher) *controller.Impl
r := &Reconciler{
dynamicClient: dynClient,
gitClient: gitClient,
workspaces: workspace.GetManager(ctx),
}
impl := controller.NewContext(ctx, internal.NewReconciler(