Настольное 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.
- GitLab — personal access token с правом
py -3.12 -m venv .venv
.venv\Scripts\pip install -r requirements.txt
.venv\Scripts\python -m app.main
При первом запуске нажмите Источники…, добавьте сервер (тип, адрес, токен, директория, SSH-ключ), затем выберите его в списке «Источник» и нажмите Обновить.
.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.