Create a script that replace git to check branch, and repository to prevent push
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

gitagile.sh 4.7KB

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