Комментарии 13
Ну, насколько я понимаю, в силу устройства git'а репы будут локальными если с ними работал. Т.е. код хранится распределённо by construction. А вот вся проприетарщина GH - issues, MR и т.д. - они проприетарны и с ними ничего толком не сделать.
Как вариант, развернуть локальную копию gitlab и клонировать репы через импорт. При импорте, копируется большинство сущностей - PR, Issues, labels.
Дальнейшая синхронизания, к сожалению, только за деньги.
Gitlab, в докере, разворачивается одной командой)
И жрёт 8(!) Гигабайт оперативы. Я с дури себе развернул, теперь хочу на gitea уйти
ну автор там в статье упоминал что у него куча реп и кроме кода больше ничего нет...
Жду продолжения по клонированию еще и отслеживаемых репозиториев (Stars). Получить можно, например, с помощью API https://api.github.com/users/kirill/starred?page=1&per_page=10000.
пара вопросов:
почему golang, а не просто bash?
во многих репо есть секреты, как их сохранить тоже? (Encrypted secrets - GitHub Docs)
Спасибо. Скажите, а для 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
А можно воспользоваться уже готовым инструментом самого гитхаба - https://github.com/settings/admin.
После удаления 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