we need just one git crate dependency - get rid of gix #47

Closed
opened 2026-07-28 04:59:58 +00:00 by hugo · 1 comment
Owner

right now parts of the code depend on gix where other parts depend on git2, because gix does not have full handling of fetch/pull/push/stage. Essentially only status, heads, available branches and diff are from gix. this should be reduced to handle everything with git2 and get rid of gix to reduce dependencies and executable size.

Make the diff algorithm configureable in the preferences, so that the user can define their preferred diff algorithm. base it on the parameters that git2 actually provides for diff analysis.

Since libgit2 has multiple diff settings, the default settings to be used for diffs need to be configureable in preferences, so that the user can configure it to their liking.

right now parts of the code depend on gix where other parts depend on git2, because gix does not have full handling of fetch/pull/push/stage. Essentially only status, heads, available branches and diff are from gix. this should be reduced to handle everything with git2 and get rid of gix to reduce dependencies and executable size. Make the diff algorithm configureable in the preferences, so that the user can define their preferred diff algorithm. base it on the parameters that git2 actually provides for diff analysis. Since libgit2 has multiple diff settings, the default settings to be used for diffs need to be configureable in preferences, so that the user can configure it to their liking.
hugo added the bug label 2026-07-28 04:59:58 +00:00
hugo added the critical label 2026-07-28 09:05:42 +00:00
hugo changed title from go to just one git crate dependency - get rid of gix to we need just one git crate dependency - get rid of gix 2026-07-28 11:00:42 +00:00
Author
Owner

Implemented in 31f6426. Removed gix and its dependency graph; Git status, local branches/HEAD, staged/worktree diffs, staging, commits, and remotes now use git2/libgit2 only. Added persisted Git diff preferences for Myers/patience/minimal algorithms, context and interhunk lines, indentation heuristic, whitespace handling, and blank-line handling. Verified this is DS4Server-only functionality (DS4 has no matching Git UI), exercised configurable libgit2 patch output and staged/worktree status in isolated tests, and passed cargo fmt, Clippy with warnings denied, make bundle, and the full test suite (143 passed, 12 hardware/model tests ignored).

Implemented in 31f6426. Removed gix and its dependency graph; Git status, local branches/HEAD, staged/worktree diffs, staging, commits, and remotes now use git2/libgit2 only. Added persisted Git diff preferences for Myers/patience/minimal algorithms, context and interhunk lines, indentation heuristic, whitespace handling, and blank-line handling. Verified this is DS4Server-only functionality (DS4 has no matching Git UI), exercised configurable libgit2 patch output and staged/worktree status in isolated tests, and passed cargo fmt, Clippy with warnings denied, make bundle, and the full test suite (143 passed, 12 hardware/model tests ignored).
hugo closed this issue 2026-07-28 16:26:18 +00:00
Sign in to join this conversation.