Skip to content

Shallow clone: answers from 1 commit of history without saying history is truncated #66

Description

@MongLong0214

Reproduction

git clone --depth 1 <repo> shallow && cd shallow
git rev-list --count HEAD          → 1
test -f .git/shallow               → yes

commitlore context   → answers. Zero mentions of shallow, depth, or truncation.
commitlore doctor    → seven checks. Zero mentions of shallow or depth.

Why this is a CI defect and not an edge case

actions/checkout@v4 defaults to fetch-depth: 1. Every GitHub Actions job that has not explicitly set otherwise runs against exactly one commit.

So a CI step that runs commitlore context, limits, ruled-out or guard sees one commit of history, finds nearly nothing, and reports that as the answer. A guard step in CI is not merely weakened — it is structurally incapable of finding a rejection recorded in any earlier commit, and it exits 0 while being incapable.

The build stays green. The integration looks like it is working. It is checking one commit.

Same shape as #58, #60, #63

check answers about cannot see says so
#58 validate trailer shape whether the reference resolves no
#60 validate one record that two were folded into one no
#63 doctor config presence whether fetch works no
this every query the history it can reach that the history is truncated no

Four instances of one defect: a check that answers without stating what it could not see. This is the strongest argument yet for the not-checked reporting line in the #58/#60 design work — a query that cannot see the full history must say so in its own output, exactly as context already does for an unfetched notes mirror.

That precedent is the right one and already exists in the codebase:

commitlore: the notes mirror has not been fetched here, so this answer may be
missing records that exist upstream

A shallow clone deserves the same sentence and does not get it. .git/shallow is a file; detecting this costs one existsSync.

Also needed

doctor should carry a shallow-history check, and the documented CI integration should tell users to set fetch-depth: 0 — otherwise the documentation is recommending a configuration in which the tool cannot work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions