TurtleGit for Mac

View Markdown source ↗

History navigation, deletion and submodule inspection

Pinned TortoiseGit: 7338078f8ddd924b8cddee35f512f2286072136d. This continuation connects the existing source-selected MergeBase7 and CheckCleanWT12 readers to related history actions and child repository workflows. It does not change the history walk, graph layout or mutation engine.

Source decisions and native consumers

Source Contract Native consumer
LogDlg.cpp:2641/2649/2743/2751 Only Tag/Branch FF jumps inspect ancestry; upward selected-to-candidate, downward candidate-to-selected Log Jump Up/Down, retaining candidate order and selection ownership
BrowseRefsDlg.cpp:681 One branch, including remote tracking, gets an unmerged warning; tags and multiple selections skip ancestry inspection Browse References deletion preparation
AppUtils.cpp:3855 Shared warning inspects local heads only; tags/remotes/stash retain separate rules Log, Reflog, Sync and Revision Graph named deletion
GitDiff.cpp:335/338, AppUtils.cpp:1808/1809 Differing commits inspect old-to-new then reverse; unavailable sides end as Unknown, unrelated commits retain timestamp classification Child Submodule Diff and conflict details, including Changed Files and Log entry
GitLogListAction.cpp:643 Combine checks tracked cleanliness before resetting; staged changes are not allowed Combine preparation and begin, followed by the existing checked Commit/replay/rollback workflow

The common-ancestor reader obtains one merge base and compares it to the starting commit. Structural algorithms needing all merge bases keep their own reader. Plain jumps and deletion selections outside the source gate do not start these ancestry inspections. Native child readers retain the existing identical, missing and uninitialized branches; unavailable metadata remains Unknown. The source classifier may attempt ancestry before finally forcing unavailable sides to Unknown; the native unavailable-side guard avoids that redundant read.

The cleanliness reader rejects unborn HEAD and tracked staged/working changes, omits untracked files and excludes submodule dirtiness, matching the source flags. It may refresh the index stat cache. Combine retains branch/HEAD and selection checks; the final readiness read must complete before mutation checks and hard/soft reset. The disabled commit-revert cleanliness block remains absent.

Accepted actions and child repositories

Each native action captures its settings when accepted and keeps the selected backend through inspection, questions and continuation. Prepared Combine and its begin action share that accepted configuration. A later independent action may capture new preferences. Child repositories retain the selected helper/config, Git executable, askpass and diff policy while the native owner retains its grants. All existing containment, child-root, immutable-object, index-stage and mutation checks remain in their workflows.

A missing requested helper or incomplete reply reports a read failure. It must not manufacture a successful ancestry classification, a clean tree or a deletion confirmation. No-common-ancestor results retain the source false decision. Optional missing commit metadata still follows the existing unavailable-side presentation; cancellation must drain before any result can publish. Retired owners and changed inputs reject late work. Existing native menus, source icons, colored submodule classifications and question controls remain the user interface.

Checkpoint and remaining work

The dated checkpoint records passing evidence for 62 distinct relevant Core methods, the final Debug app, six new native case/engine pairs and the older prepared-submodule case with both Git versions. Only checks affected by recorded failures were repeated. The batch also repairs stale destructive confirmation: a conflict externally resolved while the deletion question is open now refuses that outdated confirmation before Trash; initial missing-conflict Skip behavior remains intact. These checks certify neither the entire source call graph nor complete dialog parity. Physical keyboard/accessibility and complete layout acceptance, current hosted integration, installed signed grants, real Intel/minimum-version execution and App Store distribution remain separate gates. See the earlier Replay/Merge/Resolve inspection family and single-commit detail family for their boundaries.