Git Status - Porcelain v2 With Branch Headers
The v2 format for the same working tree: `# branch.*` headers first, then one record per entry whose leading character selects a completely different field layout. Rename records put the new path first and separate the two paths with a TAB rather than an arrow, and unmerged records carry three object ids instead of two.
# branch.oid b06c6299e8931725dd967c0724b45431be10adeb
# branch.head main
# branch.upstream origin/main
# branch.ab +2 -0
1 .M N... 100644 100644 100644 95f499dd0ac7fa49e3e537b160e0e3bbbf64c9dd 95f499dd0ac7fa49e3e537b160e0e3bbbf64c9dd internal/ledger/apply.go
1 M. N... 100644 100644 100644 d6f0c19acdbd09b264db9674882540a9f27cc2b0 d6f0c19acdbd09b264db9674882540a9f27cc2b0 internal/ledger/rounding.go
2 R. N... 100644 100644 100644 bfc7cc6ec46c0ae4bf187541159ba5c97d5e877c bfc7cc6ec46c0ae4bf187541159ba5c97d5e877c R100 docs/guide.md docs/README.md
u UU N... 100644 100644 100644 100644 b3e98dee0e179f946b83db03a0806fd900c5936f 37ff4718626ec0b23ad716c94e5a1b148d497821 8bf23d2011fa487e2429f9c295b927621b50da87 config/service.yaml
? notes.txt
! dist/bundle.js
Specifications
- Seed
- 20260807
- Command
- git status --porcelain=v2 --branch --ignored
- Entries
- 6
- Header Lines
- 4
- Record Types
- 1, 2, u, ?, !
- Rename Separator
- TAB
- Line Endings
- LF
- Encoding
- UTF-8
Testing contract
Expected to pass- Scenario
- Parse porcelain v2 output where each record type has a different field count.
- Expected result
- The four branch headers are read; the '2' record splits on TAB into new path docs/guide.md and old path docs/README.md, and the 'u' record yields three stage object ids.
What is a .log file?
LOG files are plain-text records of events emitted by software, typically one entry per line with a timestamp, severity, and message. There is no single standard, so formats range from unstructured text to structured JSON lines. They are central to debugging, monitoring, and auditing.
How to use this file
Use an example LOG file to test log parsers, timestamp and severity extraction, line-oriented streaming, and ingestion into monitoring or analysis pipelines.
How to use this file for testing
“Git Status - Porcelain v2 With Branch Headers” is a deterministic Novus Examples fixture for Log parsing, Visual diff / regression, Code parsing. Access logs and JSON-lines application logs — for testing log parsers, tailers, and ingestion pipelines.
Documented properties for this file: seed 20260807 · 6 entries · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Diff and patch fixtures name their target paths and the exact edge case they exercise — rename, mode change, binary hunk, CRLF↔LF, or missing trailing newline. Apply or render them against the documented before-state; every author, path, and hash is fictional.
Code examples
grep -i error git-status-porcelain-v2.log | head
awk '{print $1, $2, $NF}' git-status-porcelain-v2.log | headRelated files
- logGit Log - --name-status With Rename ScoresPer-commit file lists with single-letter status codes, tab-separated. Rename rows are the trap: `R100` is followed by TWO paths instead of one, so a splitter that takes field 2 as the filename reports the old path for renames and the new path for everything else.

- logGit Log - --oneline OutputSix commits as `git log --oneline` prints them: an abbreviated hash, a space, and the subject line. Every subject follows Conventional Commits, including one with a `!` breaking marker, so a release-notes generator can be scored against a known answer.

- logGit Log - Default Format With Conventional Commit BodiesThe default `git log` format for the same six commits: full 40-character hashes, Author and Date headers, and message bodies indented by exactly four spaces with genuinely empty separator lines. One commit carries a `BREAKING CHANGE:` footer and another a `Fixes:` footer, which is the shape a changelog generator has to find.

- txtCommit Message - Intentionally Invalid, Four Rule ViolationsAn intentionally invalid commit message that breaks four commitlint rules at once: no conventional type, a 116-character header, no blank line separating subject from body, and a body that starts mid-sentence. Every rule should fire independently, which is what makes this useful for checking that a linter reports all violations rather than stopping at the first.

- logGit Blame - Porcelain Format With Repeated Commit HeadersThe stable machine format of git blame: a full header block the first time a commit appears and a bare `<sha> <old> <new>` line every time after, with each source line following on a tab-prefixed line. A parser that expects the header on every group loses the author of every line after the first.

- logGit Log - --numstat With a Binary RowMachine-readable insertion and deletion counts per file. Two rows break naive arithmetic: the binary file reports `-` in both numeric columns rather than 0, and the rename path is brace-compressed into `docs/{README.md => guide.md}` rather than written out twice.

Generated by generation/version_control.py. Free for any use, no attribution required — license.