Pull to refresh

Comments 25

Ну, насколько я понимаю, в силу устройства git'а репы будут локальными если с ними работал. Т.е. код хранится распределённо by construction. А вот вся проприетарщина GH - issues, MR и т.д. - они проприетарны и с ними ничего толком не сделать.

Как вариант, развернуть локальную копию gitlab и клонировать репы через импорт. При импорте, копируется большинство сущностей - PR, Issues, labels.

Дальнейшая синхронизания, к сожалению, только за деньги.

Gitlab, в докере, разворачивается одной командой)

И жрёт 8(!) Гигабайт оперативы. Я с дури себе развернул, теперь хочу на gitea уйти

У меня на 2гб виртуалке нормально живёт со свапом на 4гб ;)

да, согласен с тем, что для комфортной работы с гитлабом на 50 пользователей и гитлаб регистри (и прочими возможностями) - лучше иметь минимум 2 ядра и 6 гиг памяти, иначе тормозит, как не знамо что

ну автор там в статье упоминал что у него куча реп и кроме кода больше ничего нет...

Можно забекапить с помощью этого скрипта https://github.com/josegonzalez/python-github-backup

Бэкапит не только репозитории с issue/pr, но и wiki, gists, и может бекапить ещё и репозитории помеченные stars.

(упомяну @krak, чтобы 2 комментария не писать)

Вообще, предполагалось что архив сщзданный программой нужен для хранения и, при необходимости, переноса на другой сервер. Архивы созданные с использование параметра --mirror хронят всю историю коммитов.

Но если вам необходимо из такого архива сделать рабочий git каталог на том же компе где сохранен архив, то вот набор комманд с помощью которых это можно сделать:

cd reponame.git git bundle create reponame.bundle --all

После этого у вас появится файл с именем reponame.bundle, который можно легко скопировать. Затем вы можете создать новый обычный репозиторий git из этого файла, используя:

git clone reponame.bundle reponame

Обратите внимание, что git копирует только те коммиты, которые ведут к какой-либо ссылке (ветке или тегу) в репозитории. И, запутанные коммиты не сохраняются в таком репозитории. Но для работы он полностью пригоден.

Спасибо.

Да, Кирилл, уже практически готово.

Смержу ваш пулреквест (я там вам новые комментарии оставил). И уже есть новая ветка с клонированием Stars, солью её после ваших правок. И будет новая версия.

Спасибо.

Мне golang ближе и милее 🤣

А по поводу секретов, то скорее всего нет. При создании github пишет, что они не подлежат редактированию.

Хотя, можно всё же извратиться и создать и запустить гитхаб-акшин который будет использовать эти секреты и оттуда их забрать. Но пока как-то это выглядит костыльно.

Спасибо.

Спасибо. Скажите, а для sourceforge есть у вас такой же скрипт?

Использую такое код уже несколько лет.

REPOSITORIES=$(curl -s https://api.github.com/users/NAME/repos?per_page=1000 | jq -r '.[] | select(.fork == false).clone_url')
for REPOSITORY in $REPOSITORIES; do
  git clone $REPOSITORY
done

Добавьте --bare и сэкономите немного места.

После удаления zinit репы автором пришлось напрячься и накидать небольшой скрипт и повесить его на systemd service


repos=(<список реп тут>)

pr_dir=/data/work/projects
for repo in "${repos[@]}"
do
  mkdir -p /tmp/$repo
  cd $pr_dir

  if [ ! -d "$pr_dir/$repo/.git" ]; then
    echo "No .git dir"
    gh repo clone $repo $repo > /tmp/$repo/clone.log
  fi

  echo "Sync github repo: $repo"
  gh repo sync $repo

  cd $pr_dir/$repo
  echo "Inside $(pwd)"

  git pull > /tmp/$repo/pull.log
done
notify-send --urgency=normal 'Github sync service' "Github repos were synced"

Пару дней назад решал подобную задачу по полному бэкапу своего и интересующих меня репозиториев GitHub. Но в отличае от автора статьи, помимо git-репозиториев мне нужен был полный бэкап всей остальной инфраструктуры GitHub: issues, comments, stars и т.д.

Сперва так же хотел заняться велосипедостроительством, благо у GitHub простой и обширный API. Но немного погуглив нашел отличное готовое решение: https://github.com/josegonzalez/python-github-backup

Устанавливаем Python последней версии с офф. сайта, если у вас его еще нет.

Далее устанавливаем скрипт в одну строку:

pip install github-backup

или лучше:

pip install git+https://github.com/josegonzalez/python-github-backup.git#egg=github-backup

Далее получаем новый токен в настройках GitHub:

Settings - Developer settings - Personal access tokens

И бекапим!

Для полного бэкапа всех своих репозиториев, со всей инфраструктурой, я использую такую строку запуска в cmd:

python c:\users\user\appdata\local\programs\python\python310\scripts\github-backup -user My_Github_Username --token My_Github_token --output-directory C:\Backup --private --fork --repositories --starred --watched --followers --following --issues --issue-comments --issue-events --pulls --pull-comments --pull-commits --pull-details --labels --wikis --gists --starred-gists --all

Для бэкапа чужого репозитория я использую такую строку запуска в cmd:

python c:\users\user\appdata\local\programs\python\python310\scripts\github-backup -user Other_Author_Github_Username --token My_Github_token --output-directory C:\Backup -R Other_Author_Repository_Name --repositories --issues --issue-comments --issue-events --pulls --pull-comments --pull-commits --pull-details --labels --wikis

У скрипта обширные параметры запуска, бэкап можно настроить на любой вкус.

Ну как можно было параметр назвать limit? В 2022 году то.

Есть же классические для cli приложений include и exclude.

А вот так - легко 🤣

Заимствовал у Ansible: https://docs.ansible.com/ansible/latest/cli/ansible-playbook.html

А что, действительно, уже кто-то ухитрился придумать классические параметры для cli приложений?

Вот блин... тут всю жизнь пишешь код... а те кто не в состоянии - стандарты сочиняют 🤣

Спасибо.

Спасибо за важную в наше время информацию!

Sign up to leave a comment.

Articles