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
@@ -519,13 +519,21 @@ export const dict: Record<I18nKey, string> = {
"gitView.stash.thisWill": "Esto hará:",
"gitView.stash.title": "Cambios sin commit",
"gitView.sync.fetch": "Fetch",
"gitView.sync.fetchFromRemote": "Fetch de {name}",
"gitView.sync.fetchTooltip": "Fetch del remoto",
"gitView.sync.commitOrStashTooltip": "Haz commit o stash de tus cambios antes de sincronizar",
"gitView.sync.moreActionsAria": "Más acciones de sincronización",
"gitView.sync.noRemoteTooltip": "No hay remotos configurados",
"gitView.sync.pull": "Pull",
"gitView.sync.pullTooltip": "Hacer pull",
"gitView.sync.pullTooltipBehind": "Hacer pull ({count} detrás)",
"gitView.sync.push": "Push",
"gitView.sync.pushTooltip": "Hacer push",
"gitView.sync.pushTooltipAhead": "Hacer push ({count} por delante)",
"gitView.sync.syncChanges": "Sync Changes",
"gitView.sync.syncChangesTooltip": "Sync Changes ({behind} abajo, {ahead} arriba)",
"gitView.sync.syncChangesWithCounts": "Sync Changes {behind}↓ {ahead}↑",
"gitView.sync.syncCounts": "{behind}↓ {ahead}↑",
"gitView.branch.actionsUnavailable": "Acciones de rama no disponibles en este estado del repositorio",
"gitView.conflict.noDetailsAvailable": "No hay detalles de conflicto disponibles",
"gitView.empty.notGitRepository": "Este directorio no es un repositorio Git",
@@ -669,6 +677,8 @@ export const dict: Record<I18nKey, string> = {
"gitView.toast.pulledFilesPlural": "Se trajeron {count} archivos de {name}",
"gitView.toast.pulledFilesSingle": "Se trajo {count} archivo de {name}",
"gitView.toast.pushedToUpstream": "Enviado al upstream",
"gitView.toast.commitOrStashBeforeSync": "Haz commit o stash de tus cambios antes de sincronizar",
"gitView.toast.syncedChanges": "Cambios sincronizados",
"gitView.toast.rebaseAborted": "Rebase abortado",
"gitView.toast.rebaseConflictsDetected": "Se detectaron conflictos al hacer rebase",
"gitView.toast.rebaseStepCompleted": "Paso de rebase completado",