HydraGit Docs
v0.3.1

Commit log & graph

The centre of the main panel: the entire commit history, drawn with HydraGit's own lane-assignment engine (not git log --graph), virtualized so it scrolls smoothly at any repository size.

Commit log log

Entry points

  • Main panelThe log loads automatically when the panel opens — no action needed.
  • ToolbarThe branch pill scopes the log to a branch; its pinned All branches entry switches to --all.
  • SearchThe search box re-queries the log server-side — see Search & filter.

What happens next

  1. Go runs log with { branch?, limit?, grep?, author? }, --topo-order, returning author / date / message / refs / parents.
  2. The commits pass through internal/graph (AssignLanes) which returns LaidOutCommits with lane, color and connector paths.
  3. The webview renders the rows. No row cap — the entire history loads.

Lane graph

The inline SVG graph: colored dots, branch-line colors and merge curves. Key properties of the engine:

  • Correct connections — a branch only ever connects to its real parent; a merge node's incoming lines are only its real parents (no false folds).
  • Compact — branches sharing an ancestor reuse lanes via short bundle diagonals (the | |/ shape). 50 branches off one base render in ~3 lanes, validated row-by-row against git log --graph.
  • Genuinely-parallel branches still render wide — correct, not collapsed.
  • Handles merges, octopus (3+ parents), criss-cross, multiple roots, re-merge churn, lane recycling, same-timestamp topologies.
  • Per-branch-line color — color follows the branch line, not the lane (lanes get reused), so each line stays consistently colored.

Hover-highlight

Hovering a commit row highlights that commit's branch line end-to-end and dims the rest of the graph, making a single thread easy to follow through merges.

Commit detail pane diff

Clicking a row loads it into the right-hand DetailPane: metadata (author, date, full message, refs), the changed-file tree, and an inline diff. Selecting a file runs diff for its hunks.

Columns & virtualization

  • Resizable columns — drag the edges of the Commit / Author / Date headers.
  • Virtualized window — only the visible rows are in the DOM (graphSvg.ts builds just the windowed SVG paths), keeping huge histories fast.