gitlab copy all projects
· 619 B · Text
Raw
TOKEN_FILE="${HOME}/work/tst.token; GITLAB_ENDPOINT="https://gitlab.example"; for GROUP in $(curl --silent --header "PRIVATE-TOKEN: $(cat ${TOKEN_FILE})" "${GITLAB_ENDPOINT}/api/v4/groups" | jq .[].id); do for ID in $(curl --silent --header "PRIVATE-TOKEN: $(cat ${TOKEN_FILE})" "${GITLAB_ENDPOINT}/api/v4/groups/${GROUP}/subgroups" | jq -r '.[].id?'); do for LINE in $(curl --silent --header "PRIVATE-TOKEN: $(cat ${TOKEN_FILE})" "${GITLAB_ENDPOINT}/api/v4/groups/${ID}" | jq -r '.projects[] | "\(.path_with_namespace);\(.ssh_url_to_repo)"'); do mkdir -p ${LINE%;*}; git clone ${LINE#*;} ${LINE%;*}; done ; done; done
| 1 | TOKEN_FILE="${HOME}/work/tst.token; GITLAB_ENDPOINT="https://gitlab.example"; for GROUP in $(curl --silent --header "PRIVATE-TOKEN: $(cat ${TOKEN_FILE})" "${GITLAB_ENDPOINT}/api/v4/groups" | jq .[].id); do for ID in $(curl --silent --header "PRIVATE-TOKEN: $(cat ${TOKEN_FILE})" "${GITLAB_ENDPOINT}/api/v4/groups/${GROUP}/subgroups" | jq -r '.[].id?'); do for LINE in $(curl --silent --header "PRIVATE-TOKEN: $(cat ${TOKEN_FILE})" "${GITLAB_ENDPOINT}/api/v4/groups/${ID}" | jq -r '.projects[] | "\(.path_with_namespace);\(.ssh_url_to_repo)"'); do mkdir -p ${LINE%;*}; git clone ${LINE#*;} ${LINE%;*}; done ; done; done |