Добавить в корзинуПозвонить
Найти в Дзене

Клонирование репозиториев с bitbucket с помощью bash скрипта

В свете последних событий думаю многим россиянам хотелось бы создать резервную копию своих приватных репозиториев. Решил поделиться тем, что написал для себя за пару часиков. Исходный код Пользоваться очень просто. Заполняете никнейм своего пользователя на битбакет, пароль, и рабочее место. Довольно часто никнейм и название рабочего места совпадают. Думаю тут ничего сложного. Затем скрипт делает запросы к битбакет и получает каждые 15 секунд по 10 репозиториев, адреса которых сохраняет в файл. bitbucket-export.sh #!/usr/bin/env bash
BITBUCKET_USER='Nickname'
BITBUCKET_PASSWORD='Password'
BITBUCKET_WORKSPACE='Workspace_name'
BITBUCKET_SLEEP='15s' NEXT_URL="https://api.bitbucket.org/2.0/repositories/${BITBUCKET_WORKSPACE}?pagelen=10" while [ ! -z $NEXT_URL ] && [ $NEXT_URL != "null" ]
do curl --request GET -u ${BITBUCKET_USER}:${BITBUCKET_PASSWORD} \
--url $NEXT_URL \
--header 'Accept: application/json' > repo_info.json jq -r '.values[] | {slug:.slug, links:.links.clone[] }
Оглавление

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

Исходный код

Пользоваться очень просто. Заполняете никнейм своего пользователя на битбакет, пароль, и рабочее место. Довольно часто никнейм и название рабочего места совпадают. Думаю тут ничего сложного.

Затем скрипт делает запросы к битбакет и получает каждые 15 секунд по 10 репозиториев, адреса которых сохраняет в файл.

bitbucket-export.sh

#!/usr/bin/env bash

BITBUCKET_USER='Nickname'
BITBUCKET_PASSWORD='Password'
BITBUCKET_WORKSPACE='Workspace_name'
BITBUCKET_SLEEP='15s'
NEXT_URL="https://api.bitbucket.org/2.0/repositories/${BITBUCKET_WORKSPACE}?pagelen=10"
while [ ! -z $NEXT_URL ] && [ $NEXT_URL != "null" ]
do
curl --request GET -u ${BITBUCKET_USER}:${BITBUCKET_PASSWORD} \
--url $NEXT_URL \
--header 'Accept: application/json' > repo_info.json
jq -r '.values[] | {slug:.slug, links:.links.clone[] } | select(.links.name=="ssh") | "git clone \(.links.href) \(.slug)"' repo_info.json >> repo_clone_urls.txt
# Cloning repositories
# for repo in `repo_clone_urls.txt`
# do
# echo "Cloning" ${repo}
# eval ${repo}
# sleep ${BITBUCKET_SLEEP}
# done
NEXT_URL=`jq -r '.next' repo_info.json`
sleep ${BITBUCKET_SLEEP}
echo 'Next url: '${NEXT_URL}
done
echo 'Script successfull completed!'

К сожалению сейчас всё расписывать не могу - если кому-то что-то непонятно - спрашивайте в комментариях. Код будет дополняться. Сейчас ещё второй скрипт приведу в порядок и выложу.

Результат

Внешний вид скрипта bash для экспорта списка репозиториев с битбакет
Внешний вид скрипта bash для экспорта списка репозиториев с битбакет

#bitbucket #битбакет #bash

Ссылка на исходный код:

https://github.com/K0r5hun/lessons-002-clone-bitbucket-repositories/