Git/GCP Cloud Source

From Ever changing code
< Git
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