Git/GCP Cloud Source
Jump to navigation
Jump to search
Download all repos across all projects:
#!/bin/bash #GCP_USERNAME=username@acme.com GCP_USERNAME=$(gcloud info --format=yaml | grep account: | head -1 | tr -s " " | cut -f3 -d" " | tr -d " ") GCP_PROJECTS_IDS=($(gcloud projects list | tail +2 | tr -s " " | cut -f1 -d " ")) echo -e "[INFO] GCP_PROJECTS: ${#GCP_PROJECTS_IDS[@]}\n${GCP_PROJECTS_IDS[@]}" for PROJECT in ${GCP_PROJECTS_IDS[@]}; do # loop over projects # discover repos in a project echo "[INFO] ---" echo -e "[INFO] Project: $PROJECT" REPOS=($(gcloud source repos list --project $PROJECT | cut -f1 -d" " | tail +2)) if ((! ${#REPOS[@]})); then echo "[INFO] No repositories found."; continue; fi echo -e "[INFO] Found following repositories: ${#REPOS[@]}\n${REPOS[@]}" [ -d $PROJECT ] || mkdir $PROJECT # create a directory per project cd $PROJECT for REPO in ${REPOS[@]}; do # loop over repositories if [ -d $REPO ]; then echo "[INFO] Update repository: $PROJECT/$REPO" cd $REPO; git pull; cd - else echo "[INFO] git clone ssh://${GCP_USERNAME}@source.developers.google.com:2022/p/${PROJECT}/r/${REPO}" git clone ssh://${GCP_USERNAME}@source.developers.google.com:2022/p/${PROJECT}/r/${REPO} fi done cd .. # return to root directory, level up from a project directory done
Note: If any cloning get stuck in Resolving deltas: 100% (46222/46222), done
, do:
Ctrl+C
, cd $REPO
, git fetch
to fetch branch information from the remote repository, git checkout master
or any other branch