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

Add possible checkout at date in clone_all scripts

parent 129197d0
Branches
No related tags found
No related merge requests found
......@@ -41,12 +41,12 @@ Crée un dépôt git (projet) au sein d'un groupe à partir de l'URL d'un projet
### clone_all_repos_in_group.py
```bash
python3 clone_all_repos_in_group.py <token> <group_id> <directory>
python3 clone_all_repos_in_group.py <token> <group_id> <directory> <until_date>
```
Clone tous les repositories d'un groupe `group_id` donné dans un répertoire nommé `directory`. Affiche sur la sortie standard les membres du groupe, l'url web du repo et dans quel sous-répertoire se trouvent les fichiers.
Clone tous les repositories d'un groupe `group_id` donné dans un répertoire nommé `directory`. Si une date `until_date` (au format `AAAA-MM-DD hh:mm`) est donnée, exécute un `git checkout` sur le premier commit précédant cette date. Affiche sur la sortie standard les membres du groupe, l'url web du repo et dans quel sous-répertoire se trouvent les fichiers.
### clone_all_forks.py
```bash
python3 clone_all_forks.py <token> <project_id> <directory>
python3 clone_all_forks.py <token> <project_id> <directory> <until_date>
```
Clone tous les forks d'un projet `project_id` donné dans un répertoire nommé `directory`. Affiche sur la sortie standard les membres du groupe (avec un droit d'accès supérieur à *Reporter*), l'url web du repo et dans quel sous-répertoire se trouvent les fichiers.
Clone tous les forks d'un projet `project_id` donné dans un répertoire nommé `directory`. Si une date `until_date` (au format `AAAA-MM-DD hh:mm`) est donnée, exécute un `git checkout` sur le premier commit précédant cette date. Affiche sur la sortie standard les membres du groupe (avec un droit d'accès supérieur à *Reporter*), l'url web du repo et dans quel sous-répertoire se trouvent les fichiers.
......@@ -7,7 +7,7 @@ import requests
import subprocess
if len(sys.argv) < 4:
print('Usage: ' + sys.argv[0] + ' <token> <project_id> <directory>')
print('Usage: ' + sys.argv[0] + ' <token> <project_id> <directory> <until_date>')
exit(1)
directory = sys.argv[3]
......@@ -36,10 +36,21 @@ for repo in repositories:
for member in members:
if member['access_level'] > 20: # Access level greater than "Reporter"
members_names += member['username'] + ', '
members_names += "'" + member['name'] + "' (" + member['username'] + '), '
print('Members: ' + members_names)
print('Web url: ' + web_url)
print('Cloning in "' + directory + '/' + repo['namespace']['name'] + '"\n')
# TODO: checkout at date
print('Cloning in "' + directory + '/' + repo['namespace']['name'] + '"')
subprocess.run(["git", "clone", "-q", ssh_url_to_repo, directory + '/' + repo['namespace']['name']])
if len(sys.argv) > 4:
until_date = sys.argv[4]
commit_id = subprocess.check_output([
"git","rev-list", "-n", "1", "--before=\"" + until_date + "\"",
"master"], cwd=directory + '/' + repo['namespace']['name']).decode('utf-8').rstrip()
subprocess.run(
["git", "checkout", "-q", str(commit_id)],
cwd=directory + '/' + repo['namespace']['name'])
print("Checkout at " + str(commit_id) + "\n")
else:
print()
\ No newline at end of file
......@@ -7,7 +7,7 @@ import requests
import subprocess
if len(sys.argv) < 4:
print('Usage: ' + sys.argv[0] + ' <token> <group_id> <directory>')
print('Usage: ' + sys.argv[0] + ' <token> <group_id> <directory> <until_date>')
exit(1)
directory = sys.argv[3]
......@@ -45,6 +45,17 @@ for repo in repositories:
print('Members: ' + members_names)
print('Web url: ' + web_url)
print('Cloning in "' + directory + '/' + repo['path'] + '"\n')
# TODO: checkout at date
subprocess.run(["git", "clone", "-q", ssh_url_to_repo, directory + '/' + repo['path']])
\ No newline at end of file
print('Cloning in "' + directory + '/' + repo['path'] + '"')
subprocess.run(["git", "clone", "-q", ssh_url_to_repo, directory + '/' + repo['path']])
if len(sys.argv) > 4:
until_date = sys.argv[4]
commit_id = subprocess.check_output([
"git","rev-list", "-n", "1", "--before=\"" + until_date + "\"",
"master"], cwd=directory + '/' + repo['path']).decode('utf-8').rstrip()
subprocess.run(
["git", "checkout", "-q", str(commit_id)],
cwd=directory + '/' + repo['path'])
print("Checkout at " + str(commit_id) + "\n")
else:
print()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment