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": "Це:",
"gitView.stash.title": "Незакомічені зміни",
"gitView.sync.fetch": "Fetch",
"gitView.sync.fetchFromRemote": "Fetch з {name}",
"gitView.sync.fetchTooltip": "Отримати з віддаленого",
"gitView.sync.commitOrStashTooltip": "Закомітьте або сховайте зміни перед синхронізацією",
"gitView.sync.moreActionsAria": "Більше дій синхронізації",
"gitView.sync.noRemoteTooltip": "Віддалені репозиторії не налаштовані",
"gitView.sync.pull": "Pull",
"gitView.sync.pullTooltip": "Отримати зміни",
"gitView.sync.pullTooltipBehind": "Pull змін ({count} позаду)",
"gitView.sync.push": "Push",
"gitView.sync.pushTooltip": "Push змін",
"gitView.sync.pushTooltipAhead": "Push змін ({count} попереду)",
"gitView.sync.syncChanges": "Sync Changes",
"gitView.sync.syncChangesTooltip": "Sync Changes ({behind} вниз, {ahead} вгору)",
"gitView.sync.syncChangesWithCounts": "Sync Changes {behind}↓ {ahead}↑",
"gitView.sync.syncCounts": "{behind}↓ {ahead}↑",
"gitView.branch.actionsUnavailable": "Дії з гілками недоступні в цьому стані сховища",
"gitView.conflict.noDetailsAvailable": "Деталі конфлікту відсутні",
"gitView.empty.notGitRepository": "Цей каталог не є репозиторієм Git",
@@ -669,6 +677,8 @@ export const dict: Record<I18nKey, string> = {
"gitView.toast.pulledFilesPlural": "Отримано файлів: {count} з {name}",
"gitView.toast.pulledFilesSingle": "Отримано файл: {count} з {name}",
"gitView.toast.pushedToUpstream": "Надіслано в upstream",
"gitView.toast.commitOrStashBeforeSync": "Закомітьте або сховайте зміни перед синхронізацією",
"gitView.toast.syncedChanges": "Зміни синхронізовано",
"gitView.toast.rebaseAborted": "Перебазування перервано",
"gitView.toast.rebaseConflictsDetected": "Виявлено конфлікти перебазування",
"gitView.toast.rebaseStepCompleted": "Етап перебазування завершено",