feat: add one-click git sync button

Combine fetch, pull with rebase, and push into one sync action
Keep remote dropdown focused on safe fetch actions
Block sync when uncommitted changes would conflict with rebase
This commit is contained in:
Bohdan Triapitsyn
2026-05-05 20:45:31 +03:00
parent ddfd2db0b8
commit c80c2b62a8
17 changed files with 217 additions and 209 deletions
+10
View File
@@ -518,13 +518,21 @@ export const dict = {
'gitView.stash.thisWill': 'This will:',
'gitView.stash.title': 'Uncommitted Changes',
'gitView.sync.fetch': 'Fetch',
'gitView.sync.fetchFromRemote': 'Fetch from {name}',
'gitView.sync.fetchTooltip': 'Fetch from remote',
'gitView.sync.commitOrStashTooltip': 'Commit or stash your changes before syncing',
'gitView.sync.moreActionsAria': 'More sync actions',
'gitView.sync.noRemoteTooltip': 'No remotes configured',
'gitView.sync.pull': 'Pull',
'gitView.sync.pullTooltip': 'Pull changes',
'gitView.sync.pullTooltipBehind': 'Pull changes ({count} behind)',
'gitView.sync.push': 'Push',
'gitView.sync.pushTooltip': 'Push changes',
'gitView.sync.pushTooltipAhead': 'Push changes ({count} ahead)',
'gitView.sync.syncChanges': 'Sync Changes',
'gitView.sync.syncChangesTooltip': 'Sync Changes ({behind} down, {ahead} up)',
'gitView.sync.syncChangesWithCounts': 'Sync Changes {behind}↓ {ahead}↑',
'gitView.sync.syncCounts': '{behind}↓ {ahead}↑',
'gitView.branch.actionsUnavailable': 'Branch actions unavailable in this repository state',
'gitView.conflict.noDetailsAvailable': 'No conflict details available',
'gitView.empty.notGitRepository': 'This directory is not a Git repository',
@@ -668,6 +676,8 @@ export const dict = {
'gitView.toast.pulledFilesPlural': 'Pulled {count} files from {name}',
'gitView.toast.pulledFilesSingle': 'Pulled {count} file from {name}',
'gitView.toast.pushedToUpstream': 'Pushed to upstream',
'gitView.toast.commitOrStashBeforeSync': 'Commit or stash your changes before syncing',
'gitView.toast.syncedChanges': 'Synced changes',
'gitView.toast.rebaseAborted': 'Rebase aborted',
'gitView.toast.rebaseConflictsDetected': 'Rebase conflicts detected',
'gitView.toast.rebaseStepCompleted': 'Rebase step completed',