Skip to content
Snippets Groups Projects
Commit aa33f339 authored by steven.liatti's avatar steven.liatti
Browse files

Add script and doc

parent 6b39c96d
Branches
No related tags found
No related merge requests found
[submodule "public"]
path = public
url = ssh://git@ssh.hesge.ch:10572/iti_assistants/modele-tp-etudiants-public.git
# modele-tp-etudiants-private
# Modèle de TP pour étudiants (privé)
Ce repo contient un modèle pour organiser un TP à faire par les étudiants avec la contrainte d'utiliser le gitlab de l'école.
\ No newline at end of file
Ce repo contient un modèle pour organiser un TP à faire par les étudiants avec la contrainte d'utiliser le gitlab de l'école. Il est constitué des fichiers privés de l'enseignant ainsi que d'un script python pour récupérer tous les forks des étudiants du repo public, ce dernier étant un repository git à part entière et submodule du premier.
La syntaxe du script est la suivante :
```bash
python3 clone_all.py <token> <project_id>
```
Vous pouvez générer un `token` [sur cette page](https://gitedu.hesge.ch/profile/personal_access_tokens), en cochant la case "api". Le `project_id` correspond à celui affiché sur la page de repo :
![image](project_id.png)
Le script clone tous les forks du repository public et les place dans le répertoire `repositories`.
\ No newline at end of file
import sys
import json
import requests
import subprocess
if len(sys.argv) < 3:
print('Usage: ' + sys.argv[0] + ' <token> <project_id>')
exit(1)
token = sys.argv[1]
project_id = sys.argv[2]
base_url = 'https://gitedu.hesge.ch/api/v4/projects/'
params = {'simple': 'true'}
headers = {'PRIVATE-TOKEN': token}
repositories = requests.get(base_url + project_id + '/forks', params=params, headers=headers).json()
for repo in repositories:
repo_url = base_url + str(repo['id']) + '/members'
members = requests.get(repo_url, headers=headers).json()
ssh_url_to_repo = repo['ssh_url_to_repo']
web_url = repo['web_url']
members_names = ''
for member in members:
if member['access_level'] > 20: # Access level greater than "Reporter"
members_names += member['username'] + ', '
print('Members: ' + members_names)
print('Web url: ' + web_url)
print('Cloning in "repositories/' + repo['namespace']['name'] + '"\n')
subprocess.run(["git", "clone", "-q", ssh_url_to_repo, "repositories/" + repo['namespace']['name']])
project_id.png

8.18 KiB

Subproject commit 51f16857a239d5a0272ad969d97d1c2b726965f6
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment