From 6159e65659593e75515d26059299582fa86d8bba Mon Sep 17 00:00:00 2001 From: "steven.liatti" <steven.liatti@hesge.ch> Date: Mon, 11 Nov 2019 17:18:10 +0100 Subject: [PATCH] Add script to clone all repositories in a given group --- .gitmodules | 3 --- clone_all_repos_in_group.py | 41 +++++++++++++++++++++++++++++++++++++ public | 1 - 3 files changed, 41 insertions(+), 4 deletions(-) delete mode 100644 .gitmodules create mode 100755 clone_all_repos_in_group.py delete mode 160000 public diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 15c6786..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "public"] - path = public - url = ssh://git@ssh.hesge.ch:10572/iti_assistants/modele-tp-etudiants-public.git diff --git a/clone_all_repos_in_group.py b/clone_all_repos_in_group.py new file mode 100755 index 0000000..ad3d7c2 --- /dev/null +++ b/clone_all_repos_in_group.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +import sys +import json +import requests +import subprocess + +if len(sys.argv) < 3: + print('Usage: ' + sys.argv[0] + ' <token> <group_id>') + exit(1) + +token = sys.argv[1] +group_id = sys.argv[2] + +base_url = 'https://gitedu.hesge.ch/api/v4/' +params = {'simple': 'true', 'per_page': 100} +headers = {'PRIVATE-TOKEN': token} + +repositories = requests.get(base_url + '/groups/' + group_id + '/projects', params=params, headers=headers).json() +if 'message' in repositories: + print('Error retrieving repositories: ' + repositories['message']) + exit(1) + +for repo in repositories: + repo_url = base_url + '/projects/' + str(repo['id']) + '/members' + members = requests.get(repo_url, headers=headers).json() + if 'message' in members: + print('Error retrieving members: ' + members['message']) + exit(1) + + ssh_url_to_repo = repo['ssh_url_to_repo'] + web_url = repo['web_url'] + members_names = '' + + for member in members: + members_names += member['username'] + ', ' + + print('Members: ' + members_names) + print('Web url: ' + web_url) + print('Cloning in "repositories/' + repo['path'] + '"\n') + subprocess.run(["git", "clone", "-q", ssh_url_to_repo, "repositories/" + repo['path']]) diff --git a/public b/public deleted file mode 160000 index 51f1685..0000000 --- a/public +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 51f16857a239d5a0272ad969d97d1c2b726965f6 -- GitLab