Skip to content

GitX quits when its history cannot be loaded #645

Closed

Description

@goneng

PBGitRevList.m:264 handles a failed commit walk with an assertion:

while ((oid = [enumerator nextOIDWithSuccess:&enumSuccess error:&enumError]) && enumSuccess && !operation.cancelled) {
	...
}

NSAssert(!enumError, @"Error enumerating commits");

So any enumeration error raises NSInternalInconsistencyException instead of
being reported. Reachable whenever the repository changes under an open window:
deleted or moved, a network volume dropping out, a corrupt object, permissions
changing.

This is not Debug-only. NS_BLOCK_ASSERTIONS is not set for Release, and the
message is present in shipped binaries:

$ strings /Applications/GitX.app/Contents/MacOS/GitX | grep -c "Error enumerating commits"
1

enumError is already populated, so it can be surfaced the way other failures
in this class are.

Found while fixing #643, where deleting a test fixture under a running walk hit
this assertion. That PR stops the tests provoking it; the handling here is
unchanged.

Activity

  1. self-assigned this
    on Sep 14, 2026
  2. added theissue type on Sep 15, 2026
  3. changed the title [-]A failed commit walk aborts instead of reporting the error[/-] [+]GitX quits when its history cannot be loaded[/+] on Sep 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions