Last active
June 5, 2024 00:18
-
-
Save cronfy/723238033f7f75d368c6243a6e4ebabc to your computer and use it in GitHub Desktop.
Download / sync all your github repositories for backup. Скачать все свои репозитории github.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Использование: | |
# | |
# 1. Установить GitHub Cli версии 2.5.2 или выше: https://github.com/cli/cli/releases | |
# 2. Авторизоваться: | |
# gh auth login | |
# 2.1. При создании токена для авторизации https://github.com/settings/tokens выдать права read и read:org | |
# 3. Создать папку для хранения репозиториев. | |
# 4. Зайти в неё. | |
# 5. Запустить скрипт /path/to/script/download-my-github-repos.sh OWNER | |
# где OWNER - ваш логин на github или название организации | |
# например: /tmp/download-my-github-repos.sh cronfy | |
# | |
# Произойдет клонирование репозиториев. При повторном запуске происходит обновление (git pull). | |
# Убедитесь, что склонировались приватные репозитории. | |
set -eu -o pipefail | |
OWNER="$1" | |
function listRepos() { | |
local owner="$1" | |
# gh repo list "$owner" | awk '{ print $1 }' | |
gh repo list "$owner" --json owner,name -t '{{range .}}{{tablerow (printf "%v" .name) .title}}{{end}}' | |
} | |
function createDirs() { | |
listRepos "$OWNER" | while read repo ; do | |
mkdir -p "$repo" | |
done | |
} | |
function sync() { | |
listRepos "$OWNER" | while read repo ; do | |
echo "Syncing $repo..." | |
mkdir -p "$repo" | |
cd "$repo" | |
if [ -d '.git' ] ; then | |
git pull | |
else | |
git clone [email protected]:"$OWNER"/"$repo".git . | |
fi | |
cd ../ | |
done | |
} | |
echo "Repos:" | |
listRepos "$OWNER" | |
sync |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment