Skip to content

Repository files navigation

Get-Git

Настольное Windows-приложение для read-only зеркалирования репозиториев GitLab и GitHub в локальные директории. Поддерживает несколько источников одновременно — у каждого свои настройки. План и архитектура — в PLAN.md и PLAN_GITHUB.md, история изменений — в CHANGELOG.md.

Что делает

  • Ведёт список источников: корпоративный GitLab, github.com, GitHub Enterprise — в любом сочетании и количестве. У каждого источника свои директория хранения, access token, SSH-ключ и число параллельных операций.
  • Получает список доступных репозиториев через API источника (GitLab REST v4 / GitHub REST).
  • Клонирует отсутствующие репозитории по SSH и полностью синхронизирует существующие: все локальные ветки принудительно приводятся к состоянию сервера, удалённые на сервере ветки удаляются локально.
  • Показывает по каждому репозиторию наличие локальной копии и дату последнего обновления; внизу окна — лог операций (дублируется в %APPDATA%\GetGit\logs\app.log).
  • Репозитории, код которых недоступен вашей роли, помечаются «нет доступа к коду» и пропускаются при обновлении; отметка «Показывать недоступные репозитории» скрывает их из списка.
  • Необработанные ошибки записываются в %APPDATA%\GetGit\logs\app.log, аварийные падения — в crash.log рядом; приложение при ошибке показывает окно, а не закрывается.

Важно: локальные копии считаются read-only и являются точным зеркалом сервера. Синхронизация выполняет принудительный fetch, git reset --hard и git clean -fdx — любые локальные правки, коммиты и посторонние файлы (включая ignored: сборки, виртуальные окружения) будут удалены без вопросов. Не работайте в этих папках.

Где хранятся настройки

  • %APPDATA%\GetGit\getgit.db — SQLite-база: источники и их настройки, глобальные параметры, дата/результат последней синхронизации каждого репозитория.
  • Access tokens — в Диспетчере учётных данных Windows (по одной записи на источник), в базе и файлах они не хранятся.
  • %APPDATA%\GetGit\logs\ — логи.
  • При первом запуске версии 2.x настройки старых версий (config.json, state.json) автоматически переносятся в базу, старые файлы переименовываются в *.bak.

Требования

  • Windows 10/11, установленный Git for Windows (git в PATH).
  • SSH-ключ, добавленный в профиль соответствующего сервера (GitLab / GitHub). Ключ с passphrase поддерживается только через запущенный ssh-agent.
  • Access token:
    • GitLab — personal access token с правом read_api (GitLab → Settings → Access Tokens);
    • GitHub — classic PAT со scope repo либо fine-grained PAT с правами Metadata: Read + Contents: Read (в организациях с SSO токен нужно авторизовать для организации). Для GitHub Enterprise Server адрес API — https://<host>/api/v3.

Запуск из исходников

py -3.12 -m venv .venv
.venv\Scripts\pip install -r requirements.txt
.venv\Scripts\python -m app.main

При первом запуске нажмите Источники…, добавьте сервер (тип, адрес, токен, директория, SSH-ключ), затем выберите его в списке «Источник» и нажмите Обновить.

Сборка exe

.venv\Scripts\pip install -r requirements-dev.txt
.venv\Scripts\pyinstaller get-git.spec

Результат — dist\get-git.exe (Python у пользователей не требуется, Git — требуется).

Тесты

.venv\Scripts\python -m pytest tests -v

Тесты git-операций используют локальные репозитории и не требуют сети/GitLab/GitHub.

About

Get git repositories

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages