Git Sync — небольшое приложение для фонового мониторинга локальных Git-репозиториев. Оно периодически проверяет upstream-ветки и автоматически получает удалённые изменения только тогда, когда обновление можно выполнить безопасным fast-forward pull.
Приложение не создаёт merge-коммиты, не отправляет изменения через git push и не изменяет репозитории с незакоммиченными локальными файлами. Если автоматическое обновление небезопасно, Git Sync оставляет репозиторий без изменений и сообщает о его состоянии через интерфейс, системный трей и значок на панели задач.
- фоновая проверка и безопасное обновление нескольких репозиториев;
- добавление отдельного репозитория или группы каталогов;
- рекурсивный поиск репозиториев внутри группы;
- сохранение временно недоступных каталогов в списке мониторинга;
- запуск приложения вместе со входом в систему;
- работа в системном трее и защита от запуска второго экземпляра.
- проверка, загрузка с отображением прогресса и установка подписанных обновлений;
- отображение текущей версии в настройках приложения.
GitHub Actions создаёт стабильные SemVer-релизы: первый релиз нового формата — v1.0.0, затем автоматически увеличивается patch-версия (v1.0.1, v1.0.2 и так далее). Версия синхронно записывается в frontend, Tauri и Cargo manifests непосредственно перед сборкой.
Обновления публикуются через GitHub Releases как подписанные Tauri artifacts вместе с latest.json. Релиз остаётся draft, пока не собраны Windows и macOS варианты, поэтому приложение никогда не увидит неполный набор файлов. Клиент проверяет обновления при запуске и затем каждые шесть часов; сетевые ошибки не мешают основной работе.
Для release workflow необходим GitHub Actions secret TAURI_SIGNING_PRIVATE_KEY. Локально сгенерированный приватный ключ находится в .tauri/git-sync.key и исключён из Git. Его содержимое нужно скопировать в secret через Settings → Secrets and variables → Actions и сохранить резервную копию ключа в защищённом месте. Потеря ключа сделает выпуск обновлений для уже установленных версий невозможным.
Перед обновлением Git Sync выполняет git fetch и проверяет состояние репозитория. Автоматический git pull --ff-only запускается, только если:
- у текущей ветки настроен upstream;
- рабочее дерево не содержит локальных изменений;
- локальная ветка не опережает удалённую;
- удалённая ветка содержит новые коммиты и может быть применена fast-forward-обновлением.
Во всех остальных случаях приложение ничего не меняет и ожидает действий пользователя.
Фоновая синхронизация запускает не более одного процесса Git одновременно. Повторный ручной или плановый цикл не дублирует уже выполняющуюся проверку. Локальные Git-команды ограничены 30 секундами, сетевые fetch/pull — 90 секундами; при таймауте на Windows завершается всё дочернее дерево процесса.
- зелёный значок — ошибок и незакоммиченных изменений нет;
- жёлтый значок — хотя бы в одном репозитории есть локальные изменения;
- красный значок — каталог недоступен, ветки разошлись или Git-команда завершилась ошибкой.