Skip to content

Repository files navigation

Git Sync

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-команда завершилась ошибкой.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages