Это программа поможет вам с локальным хранением репозиториев и Gists
, которые хранятся на Github
.
-
Зачем это = Например, есть у вас более 20 репозиториев, и вы очень дорожите ими, что храните их на внешних носителях, и на различных устройствах. Скачивать и обновлять каждый репозиторий в ручную долго, поэтому создана это программа, для автоматизации этой задачи.
-
Почему не на Bash ? = потому что на
Python
легче реализовать асинхронную работу с сетью. Благодаря асинхронности мои 50 репозиториев клонируются за 2 минуту, аpull
выполняется за 30 секунд. -
Это автоматизированно = Конфигурации для работы получается из API Github.
-
Скачать
gitclones
из репозитория -
Добавить
alias
в оболочкуalias -g gitclones="ПУТЬ/git_clons/venv/bin/python3.10 ПУТЬ/git_clons/git_clons/main.py"
-
Проверим что вы указали верный путь
gitclones --help
-
Сформировать конфигурационный файл для указанного профиля. В него попадут ссылки на все публичные репозитории и
Gist
, и общая информация о профиле. По умолчанию файл будет расположен по пути./gitconf.json
.gitclones getconf ИмяПользователяGitHub -t ghp_ТокенGithub
-
Внимание, приватные репозитории не будут получены, их нужно указывать вручную в этом же файле
gitconf.json
. Они не будут удалятся при следующей командеgetconf
, при этом токен который указан в ихURL
будет обновлен на, то что вы передали в параметре-t
(это полезная вещь, когда срок вашего токена истек, и вам нужно его обновить на новый).Пример ручного добавления репозитория
"all_repos": { ..., "ИмяПроекта": { "visibility": "private", "clone_url": "https://USERNAME:[email protected]/denisxab/ИмяПроекта.git", "default_branch": "ИмяВеткиПоУмолчанию" } ..., }
-
-
Синхронизировать репозитории(если его нет, то скачать, если они есть, то выполнить
pull
, еслиurl
отличается от конфигурации, то изменитьurl
на тот что указан в конфигурации) иGists
(обновить до самой новой версии)gitclones sync -o ПутьКудаКлонировать
Итоговая структура:
- rep -> - ИмяРепозитория -> - gists -> - ИмяGists -> - ВерсияGists_1 -> - ФайлGists.any - ВерсияGists_N -> - ФайлGists.any - gitconf.json