Provide world Git identity, reflog fallback, object inspection, and which (T73)

This commit is contained in:
2026-11-08 02:28:34 +00:00
parent 1892642d8e
commit fdda49394f
11 changed files with 450 additions and 30 deletions
+16 -2
View File
@@ -49,6 +49,18 @@ The component uses WASI's `exit-with-code`, not a custom host import.
The world host must enable that optional WASI function.
The tests pass explicit `-C` paths.
## Identity
The host creates `/etc/gitconfig` when it is absent.
It sets `user.name = Sausage` and `user.email = sausage@localhost`.
Git reads this system configuration unless `GIT_CONFIG_NOSYSTEM` disables it.
Local repository configuration overrides these defaults. The host preserves an existing system configuration.
The `Sausage-Conversation` trailer retains conversation attribution.
Reflog-only operations use a fallback committer when no identity exists.
They include reset, checkout, branch changes, and reference updates.
New commits and annotated tags still require an identity.
## Agent command forms
The comparison suite covers per-command `-c key=value` overrides and quiet local commands.
@@ -60,10 +72,12 @@ It also checks these forms:
- `log --format` and `--pretty=format:` with `%H %h %s %an %ae %ad %d`.
- `log A..B`, `--name-only`, `--no-renames`, and `--diff-merges=first-parent`.
- `%x00`, `%x1e`, and `%(trailers:key=Sausage-Conversation,valueonly)` in log formats.
- `show --stat`, `show HEAD:path`, and merge commits without a combined diff.
- `show --stat`, `--oneline`, `--name-only`, `show HEAD:path`, and merge commits without a combined diff.
- `cat-file -t`, `-p`, `-s`, and `-e` for object inspection.
- `ls-tree [-r] [--name-only] <rev> [path]` for literal paths.
- `diff HEAD~1`, `diff A..B`, `--name-only`, `--name-status`, and one literal path after `--`.
- `diff --check` and `diff --cached --check` for added whitespace errors and conflict markers.
- `branch -a`, `-d`, `-D`, `-m`, and `--show-current`.
- `branch -a`, `-d`, `-D`, `-f`, `-m`, and `--show-current`.
- `checkout -b`, `switch -c`, and `merge --no-ff`.
- `rev-parse --short HEAD`, `ls-files`, and `config --get`.
- Quiet `init`, `commit`, branch deletion, `checkout`, `switch`, `merge`, and `rebase`.