Browse Source

First commit

Jules Latsague 6 years ago
commit
b95301302f
2 changed files with 164 additions and 0 deletions
  1. 39
    0
      README.md
  2. 125
    0
      gitagile.sh

+ 39
- 0
README.md View File

@@ -0,0 +1,39 @@
1
+# Git-Agile
2
+
3
+Créer un script qui intersède les appels à Git afin d'interdire les « push » pour les branches déclarées dans le fichier voulu
4
+
5
+## Fonctionnement
6
+
7
+Les fichiers dans /usr/bin de systèmes debian-based sont appelé par défaut depuis le terminal. Un script du nom de git va effectuer des tests (selon l'action, la branche et le dépôts ) avant d'afficher un message d'erreur ou de passer ces arguments à git
8
+
9
+## Installation
10
+
11
+Le script fournit permet de génerer le script d'intercession
12
+
13
+```
14
+#!/bin/sh
15
+if [ "$(cat ~/.gitagile | grep $(basename -s .git `/usr/lib/git-core/git config --get remote.origin.url`))" ]; then
16
+    if [ "$1" = "push" ]; then
17
+        if [ "$(/usr/lib/git-core/git branch | grep '^* master')" ] || [ "$(/usr/lib/git-core/git branch | grep '^* sprint-')" ]; then
18
+            /bin/echo -e "033[1;31m ⚠ Current branch is protected.033[0m\nNo push allowed\nSee $PROTECT_LIST to change it or bypass it in invocating $GIT_APP_PATH \n"
19
+            exit
20
+        fi
21
+    fi
22
+fi
23
+$GIT_APP_PATH $@
24
+```
25
+
26
+Il dépand de plusieurs variables qui seront préciser lors de leur déploiement. Le script d'installation permet de passer en parametres ces variables. Par example :
27
+
28
+```
29
+sh gitagile.sh -p ~/.gitagile -b gitagile webserver
30
+```
31
+
32
+La liste des branches sera crée dans ~/.gitagile, avec les branches gitagile webserver.
33
+
34
+Pour plus d'informations, utiliser l'options -h
35
+
36
+## TODO
37
+- Tester le processus d'installation en entier
38
+- Définir dynamiquement l'emnèlacement de l'executable de git
39
+

+ 125
- 0
gitagile.sh View File

@@ -0,0 +1,125 @@
1
+#!/bin/sh
2
+GIT_PATH=$(whereis git)
3
+GIT_APP_PATH="/usr/lib/git-core/git"
4
+PROTECT_LIST="~/.gitignore"
5
+PROTECTED_BRANCH=""
6
+B=""
7
+
8
+main () {
9
+    echo " Traitement des arguments ━━━━━━━━━━━━━━━━━━━━━━━"
10
+    while [ $# -gt 0 ]
11
+    do case $1 in
12
+        -h)
13
+           echo "Installe Git-Agile."
14
+           echo "Git-Agile va prévenir les actions push sur les branches master et sprint-* des branches définit par l'utilisateur (par défaut dans $PROTECT_LIST)"
15
+           echo "Syntaxe:"
16
+           echo "\t sh gitagile.sh [parametre]"
17
+           echo "\nParametres:"
18
+           echo "-p\tDéfinit l'emplacement de sauvegarde des branches (par défaut $PROTECT_LIST)"
19
+           echo "-a\tDéfinit l'emplacement de l'exécutable de git (par défaut $GIT_APP_PATH)"
20
+           echo "-g\tDéfinit l'emplacement depuis lequel git est invoqué"
21
+           echo "-d\tLance le déploiement du script d'interface (dans $GIT_APP_PATH) sans modifier la liste des branches"
22
+           echo "-b\tAjoute les noms suivants à la liste des "
23
+           echo "-l\tCrée la liste des branches protégées d'après les parametres précédants; efface les entrées précédantes"
24
+           echo "-v\tAffiche la version du script"
25
+           echo "\n Fin de traitements ━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
26
+           exit 1 ;;
27
+        -p)
28
+           B=""
29
+           PROTECT_LIST=$2
30
+           shift 
31
+           shift ;;
32
+        -a)
33
+           B=""          
34
+           GIT_APP_PATH=$2
35
+           shift
36
+           shift ;;
37
+        -g)
38
+            B=""           
39
+            GIT_PATH=$2
40
+            shift
41
+            shift ;;
42
+        -d)
43
+            B=""           
44
+            deploy
45
+            exit 1 ;;
46
+        -b)
47
+            B=1
48
+            shift ;;
49
+        -v)
50
+            B="" 
51
+            version
52
+            exit 1 ;;
53
+        -l)
54
+            B=""
55
+            create_liste
56
+            exit 1 ;;
57
+        -i)
58
+            B=""
59
+            finstall
60
+            exit 1 ;;
61
+        *)
62
+            if [ "$B" ]; then
63
+                PROTECTED_BRANCH="$PROTECTED_BRANCH\n$2"
64
+                shift
65
+            else
66
+                echo "Argument inconnu <$1>. Utiliser gitagile.sh -h pour plus d'informations"
67
+            fi
68
+            shift ;;
69
+    esac
70
+    done
71
+    echo "\n Fin de traitements ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
72
+}
73
+
74
+create_liste() {
75
+   echo $PROTECTED_BRANCH > PROTECT_LIST
76
+}
77
+
78
+deploy() {
79
+    mv $GIT_PATH $GIT_PATH.bk
80
+    echo "#!/bin/sh
81
+if [ \"\$(cat ~/.gitagile | grep \$(basename -s .git `/usr/lib/git-core/git config --get remote.origin.url`))\" ]; then
82
+    if [ \"\$1\" = \"push\" ]; then
83
+        if [ \"\$(/usr/lib/git-core/git branch | grep \'^* master\')\" ] || [ \"\$(/usr/lib/git-core/git branch | grep \'^* sprint-\')\" ]; then
84
+            \/bin\/echo -e \"033[1;31m ⚠ Current branch is protected.\033[0m\\\nNo push allowed\\\nSee $PROTECT_LIST to change it or bypass it in invocating $GIT_APP_PATH \\\n\"
85
+            exit
86
+        fi
87
+    fi
88
+fi
89
+    $GIT_APP_PATH \$@" > $GIT_PATH
90
+}
91
+
92
+version() {
93
+    echo "Version 0.3"
94
+}
95
+
96
+finstall() {
97
+    echo "INSTALLATION COMPLETE ───────────────────────────"  
98
+
99
+    if [ "$PROTECTED_BRANCH" ]; then
100
+        create_liste
101
+    else
102
+        echo -e "\033[1;37m ⚠ Aucune branche n'a été précisé. Entrez toutes les branches séparées par «/», puis entrer pour valider\033[0m"
103
+        read PROTECTED_BRANCH
104
+        PROTECTED_BRANCH="$(echo $PROTECTED_BRANCH | sed -e 's/\ /\n/g')"
105
+        create_liste
106
+    fi
107
+    deploy
108
+}
109
+
110
+echo "\t┌───────────────────────────────────────┐"
111
+echo "\t│                                       │"
112
+echo "\t│            Installation de            │"
113
+echo "\t│               Git-Agile               │"
114
+echo "\t│                                       │"
115
+echo "\t└───────────────────────────────────────┘\n"
116
+echo "Auteur : Jules Latsague <jules.latsague@caldera.com>"
117
+echo "Dernière modification : 23/10/2017"
118
+version
119
+echo "ATTENTION ───────────────────────────────────────"
120
+echo " — Vous devez posséder les accès super utilisateurs (sudo)"
121
+echo " — Ce script ne doit PAS être exécuter en tant que super utilisateur"
122
+echo "─────────────────────────────────────────────────"
123
+
124
+main $@
125
+exit ;

Loading…
Cancel
Save