git-span 1.0.132 → 1.0.136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,9 +4,15 @@
4
4
 
5
5
  The primary CLI surface lives in `src/cli/mod.rs`. Run `git span --help` or `git span stale --help` for flag reference.
6
6
 
7
- ### Upgrading from the sqlite cache
7
+ ### The stale cache
8
8
 
9
- The trail cache now lives at `<common_dir>/span/cache/v1/` as a BLAKE3-keyed content-addressed filesystem store. The previous sqlite-backed cache at `<common_dir>/span/cache/span_cache.sqlite` (or `<git_dir>/span/cache/span_cache.sqlite` on older per-worktree installations), along with its `-shm` and `-wal` companions, is unused and can be removed with a single `rm -f <common_dir>/span/cache/span_cache.sqlite*` (and the `<git_dir>` variant if present). Nothing reads those files anymore; `git span doctor --gc-trail-cache` operates only on the new store.
9
+ `git span stale` (and related resolution paths) are backed by a single persistent cache: a SQLite database at `<common_dir>/span/store.db` (plus its `-wal` and `-shm` companions), implemented in `src/resolver/store/`. This is the whole on-disk cache footprint — remove `store.db*` to reset it. Setting `GIT_SPAN_CACHE=0` disables it for a run.
10
+
11
+ The store is bounded by a byte high-water mark (256 MiB by default; override with `GIT_SPAN_STORE_MAX_BYTES` or `git config git-span.storeMaxBytes`), with transactional GC that runs only when a publish crosses the cap. It lives in the Git *common* directory, so it is shared across linked worktrees of one clone on one host; it is not shared cross-host or cross-clone. Earlier releases kept two separate caches (a `cache/v1/` filesystem trail store and a `stale-cache.db`); both were replaced by this one store and leave no files behind on a fresh clone.
12
+
13
+ ### The shared executable-digest store
14
+
15
+ A configured filter driver's resolved executable (e.g. a `git-lfs` install) is content-hashed to prove its identity as part of every state-token capture. That hash is a fact about a file on the local machine, not about any one repository, so it is memoized in a *second*, small, per-user SQLite database — separate from the per-repo stale cache above — at `$GIT_SPAN_CACHE_HOME/exe-digest.db`, defaulting to `$HOME/.cache/git-span/exe-digest.db` (mirrors the workspace's `$HOME/.cache/git-span/cargo-target/` per-user build-artifact directory). Every repository on a machine that shares the same filter executable reuses the same memoized digest instead of re-hashing it per clone. `GIT_SPAN_EXE_DIGEST_DB` overrides the database file path directly (useful for CI isolation). `GIT_SPAN_CACHE=0` disables this store too, exactly like the stale cache. Implemented in `src/resolver/core/exe_digest_store.rs`; safe to delete at any time (it is rebuilt lazily, fail-closed on any error — a missing or broken database just means every executable is re-hashed).
10
16
 
11
17
  ## Profiling
12
18
 
package/man/git-span.1 CHANGED
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH git-span 1 "git-span 1.0.132"
3
+ .TH git-span 1 "git-span 1.0.136"
4
4
  .ie \n(.g .ds Aq \(aq
5
5
  .el .ds Aq '
6
6
  .SH NAME
@@ -8,7 +8,7 @@ git\-span \- Track implicit semantic dependencies in a git repo.
8
8
  .ie \n(.g .ds Aq \(aq
9
9
  .el .ds Aq '
10
10
  .SH SYNOPSIS
11
- \fBgit\-span\fR [\fB\-\-perf\fR] [\fB\-\-span\-dir\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] [\fIsubcommands\fR]
11
+ \fBgit\-span\fR [\fB\-\-perf\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] [\fIsubcommands\fR]
12
12
  .SH DESCRIPTION
13
13
  .B git span
14
14
  tracks implicit semantic dependencies in a Git repository: couplings between
@@ -76,9 +76,6 @@ Emit performance timings for major git\-span operation groups to stderr.
76
76
 
77
77
  Can also be enabled with `GIT_SPAN_PERF=1`.
78
78
  .TP
79
- \fB\-\-span\-dir\fR \fI<SPAN_DIR>\fR
80
- Span root directory (default: .span). Overrides GIT_SPAN_DIR and git config git\-span.dir
81
- .TP
82
79
  \fB\-h\fR, \fB\-\-help\fR
83
80
  Print help (see a summary with \*(Aq\-h\*(Aq)
84
81
  .TP
@@ -109,9 +106,6 @@ Read or stage the span\*(Aqs why — a one\-sentence definition of the subsystem
109
106
  git\-span\-delete(1)
110
107
  Delete a span
111
108
  .TP
112
- git\-span\-move(1)
113
- Rename a span
114
- .TP
115
109
  git\-span\-doctor(1)
116
110
  Audit the local span setup
117
111
  .TP
@@ -129,7 +123,7 @@ Print this message or the help of the given subcommand(s)
129
123
  .ie \n(.g .ds Aq \(aq
130
124
  .el .ds Aq '
131
125
  .SH VERSION
132
- v1.0.132
126
+ v1.0.136
133
127
  .SH EXAMPLES
134
128
  Anchor a new span alongside a code change:
135
129
  .PP
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "git-span",
3
- "version": "1.0.132",
3
+ "version": "1.0.136",
4
4
  "bin": "bin/git-span.exe",
5
5
  "man": [
6
6
  "man/git-span.1"
@@ -15,7 +15,7 @@
15
15
  "lint": "bash scripts/with-target-lock.sh shared env CARGO_BUILD_JOBS=1 RUSTFLAGS=\"-W unused -W dead-code\" CARGO_TARGET_DIR=\"${GIT_SPAN_CARGO_TARGET_ROOT:-$HOME/.cache/git-span/cargo-target}/git-span/check\" cargo clippy --quiet --locked -- -D warnings",
16
16
  "typecheck": "bash scripts/with-target-lock.sh shared env CARGO_BUILD_JOBS=1 RUSTFLAGS=\"-W unused -W dead-code\" CARGO_TARGET_DIR=\"${GIT_SPAN_CARGO_TARGET_ROOT:-$HOME/.cache/git-span/cargo-target}/git-span/check\" cargo check --quiet --locked",
17
17
  "bench:check": "bash scripts/with-target-lock.sh shared env CARGO_BUILD_JOBS=1 CARGO_TARGET_DIR=\"${GIT_SPAN_CARGO_TARGET_ROOT:-$HOME/.cache/git-span/cargo-target}/git-span/build\" cargo bench --no-run --locked --features bench-corpus",
18
- "bench": "bash scripts/with-target-lock.sh shared env CARGO_TARGET_DIR=\"${GIT_SPAN_CARGO_TARGET_ROOT:-$HOME/.cache/git-span/cargo-target}/git-span/build\" cargo bench --locked",
18
+ "bench": "bash scripts/with-target-lock.sh shared env CARGO_BUILD_JOBS=1 CARGO_TARGET_DIR=\"${GIT_SPAN_CARGO_TARGET_ROOT:-$HOME/.cache/git-span/cargo-target}/git-span/build\" cargo bench --locked",
19
19
  "udeps": "bash scripts/with-target-lock.sh shared env CARGO_BUILD_JOBS=1 CARGO_TARGET_DIR=\"${GIT_SPAN_CARGO_TARGET_ROOT:-$HOME/.cache/git-span/cargo-target}/git-span/udeps\" cargo +nightly udeps"
20
20
  },
21
21
  "files": [
@@ -24,11 +24,11 @@
24
24
  "scripts/postinstall.js"
25
25
  ],
26
26
  "optionalDependencies": {
27
- "git-span-darwin-arm64": "1.0.132",
28
- "git-span-darwin-x64": "1.0.132",
29
- "git-span-linux-arm64": "1.0.132",
30
- "git-span-linux-x64": "1.0.132",
31
- "git-span-win32-x64": "1.0.132"
27
+ "git-span-darwin-arm64": "1.0.136",
28
+ "git-span-darwin-x64": "1.0.136",
29
+ "git-span-linux-arm64": "1.0.136",
30
+ "git-span-linux-x64": "1.0.136",
31
+ "git-span-win32-x64": "1.0.136"
32
32
  },
33
33
  "repository": {
34
34
  "type": "git",