denisxab / git_clons

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Что это ?

Это программа поможет вам с локальным хранением репозиториев и Gists, которые хранятся на Github.

  • Зачем это = Например, есть у вас более 20 репозиториев, и вы очень дорожите ими, что храните их на внешних носителях, и на различных устройствах. Скачивать и обновлять каждый репозиторий в ручную долго, поэтому создана это программа, для автоматизации этой задачи.

  • Почему не на Bash ? = потому что на Python легче реализовать асинхронную работу с сетью. Благодаря асинхронности мои 50 репозиториев клонируются за 2 минуту, а pull выполняется за 30 секунд.

  • Это автоматизированно = Конфигурации для работы получается из API Github.

Установка

  1. Скачать gitclones из репозитория

  2. Добавить alias в оболочку

    alias -g gitclones="ПУТЬ/git_clons/venv/bin/python3.10 ПУТЬ/git_clons/git_clons/main.py"
  3. Проверим что вы указали верный путь

    gitclones --help

Как пользоваться

  1. Сформировать конфигурационный файл для указанного профиля. В него попадут ссылки на все публичные репозитории и Gist, и общая информация о профиле. По умолчанию файл будет расположен по пути ./gitconf.json.

    gitclones getconf ИмяПользователяGitHub -t ghp_ТокенGithub
    • Внимание, приватные репозитории не будут получены, их нужно указывать вручную в этом же файле gitconf.json. Они не будут удалятся при следующей команде getconf, при этом токен который указан в их URL будет обновлен на, то что вы передали в параметре -t(это полезная вещь, когда срок вашего токена истек, и вам нужно его обновить на новый).

      Пример ручного добавления репозитория

      "all_repos": {
          ...,
          "ИмяПроекта": {
              "visibility": "private",
              "clone_url": "https://USERNAME:TOKEN@github.com/denisxab/ИмяПроекта.git",
              "default_branch": "ИмяВеткиПоУмолчанию"
          }
          ...,
      }
  2. Синхронизировать репозитории(если его нет, то скачать, если они есть, то выполнить pull, если url отличается от конфигурации, то изменить url на тот что указан в конфигурации) и Gists(обновить до самой новой версии)

    gitclones sync -o ПутьКудаКлонировать

    Итоговая структура:

    - rep ->
       - ИмяРепозитория ->
    - gists ->
       - ИмяGists ->
          - ВерсияGists_1 ->
             - ФайлGists.any
          - ВерсияGists_N ->
             - ФайлGists.any
    - gitconf.json

About


Languages

Language:Python 95.8%Language:Makefile 4.2%