Skip to content

Improve Git support: safer workflows, reliable refresh and staged diffs - #366

Open
hendrikmennen wants to merge 1 commit into
mainfrom
improve/git-support
Open

Improve Git support: safer workflows, reliable refresh and staged diffs#366
hendrikmennen wants to merge 1 commit into
mainfrom
improve/git-support

Conversation

@hendrikmennen

Copy link
Copy Markdown
Contributor

Summary

Improve Git support across commit/staging, diffs, branch and remote workflows, background refresh, and cloning.

  • Fix the Commit Staged menu action staging all changes; validate messages and prevent Commit All from silently resolving conflicts.
  • Separate staged (HEAD to index) and unstaged (index to working tree) comparisons, support initial commits/untracked files, and refresh comparisons on atomic index replacements.
  • Confirm destructive actions, preserve staged edits during individual discard, and protect untracked files during hard reset.
  • Preserve nested remote branch names, confirm branch deletion, and configure upstream only after successful publication.
  • Serialize Git operations, keep pull/push atomic during sync, guarantee cleanup, and avoid stale ahead/behind counts suppressing pushes.
  • Separate fetch and polling timers, scan status off the UI thread, dispose repository handles, and keep background fetch quiet and retryable.
  • Complete clone-to-folder workflow with destination checks and cancellation; bound login attempts and handle cancelled identity dialogs.
  • Open HEAD snapshots separately from working-tree editors and correct combined status badges and conflict counts.

Validation

  • 40 regression tests pass in OneWare.SourceControl.UnitTests using temporary repositories and local bare remotes.
  • Source-control module builds successfully.
  • Desktop application builds successfully (existing warnings in unrelated modules).
  • git diff --check passes.

Manual checks still needed

  • Desktop click-through checks, particularly project switching during fetch and simultaneous polling/auto-fetch.
  • Interactive authentication, private-repository pull/push, rejected pushes, and login cancellation.
  • Clone cancellation and open-as-folder UI.

Workflow documentation and the smoke-check checklist are in docs/SourceControl.md. This PR does not add stash, rebase, history browsing, or new authentication providers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant