-
1. DĂ©marrage rapide
-
2. Les bases de Git
-
3. Les branches avec Git
-
4. Git sur le serveur
- 4.1 Protocoles
- 4.2 Installation de Git sur un serveur
- 4.3 Génération des clés publiques SSH
- 4.4 Mise en place du serveur
- 4.5 DĂ©mon (Daemon) Git
- 4.6 HTTP intelligent
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Git hébergé
- 4.10 Résumé
-
5. Git distribué
-
6. GitHub
-
7. Utilitaires Git
- 7.1 SĂ©lection des versions
- 7.2 Indexation interactive
- 7.3 Remisage et nettoyage
- 7.4 Signer votre travail
- 7.5 Recherche
- 7.6 RĂ©Ă©crire lâhistorique
- 7.7 Reset démystifié
- 7.8 Fusion avancée
- 7.9 Rerere
- 7.10 DĂ©boguer avec Git
- 7.11 Sous-modules
- 7.12 Empaquetage (bundling)
- 7.13 Replace
- 7.14 Stockage des identifiants
- 7.15 Résumé
-
8. Personnalisation de Git
- 8.1 Configuration de Git
- 8.2 Attributs Git
- 8.3 Crochets Git
- 8.4 Exemple de politique gérée par Git
- 8.5 Résumé
-
9. Git et les autres systĂšmes
- 9.1 Git comme client
- 9.2 Migration vers Git
- 9.3 Résumé
-
10. Les tripes de Git
- 10.1 Plomberie et porcelaine
- 10.2 Les objets de Git
- 10.3 Références Git
- 10.4 Fichiers groupés
- 10.5 La refspec
- 10.6 Les protocoles de transfert
- 10.7 Maintenance et récupération de données
- 10.8 Les variables dâenvironnement
- 10.9 Résumé
-
A1. Annexe A: Git dans dâautres environnements
- A1.1 Interfaces graphiques
- A1.2 Git dans Visual Studio
- A1.3 Git dans Visual Studio Code
- A1.4 Git dans IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git dans Sublime Text
- A1.6 Git dans Bash
- A1.7 Git dans Zsh
- A1.8 Git dans PowerShell
- A1.9 Résumé
-
A2. Annexe B: Embarquer Git dans vos applications
- A2.1 Git en ligne de commande
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Commandes Git
- A3.1 Installation et configuration
- A3.2 Obtention et création des projets
- A3.3 Capture dâinstantanĂ© basique
- A3.4 Création de branches et fusion
- A3.5 Partage et mise Ă jour de projets
- A3.6 Inspection et comparaison
- A3.7 DĂ©bogage
- A3.8 Patchs
- A3.9 Courriel
- A3.10 SystĂšmes externes
- A3.11 Administration
- A3.12 Commandes de plomberie
4.6 Git sur le serveur - HTTP intelligent
HTTP intelligent
Nous avons à présent un accÚs authentifié par SSH et un accÚs non authentifié par git://
, mais il existe aussi un protocole qui peut faire les deux Ă la fois. La configuration dâun HTTP intelligent revient simplement Ă activer sur le serveur un script CGI livrĂ© avec Git qui sâappelle git-http-backend
. Ce CGI va lire le chemin et les entĂȘtes envoyĂ©s par un git fetch
ou un git push
à une URL donnée et déterminer si le client peut communiquer sur HTTP (ce qui est vrai pour tout client depuis la version 1.6.6). Si le CGI détecte que le client est intelligent, il va commencer à communiquer par protocole intelligent, sinon il repassera au comportement du protocole idiot (ce qui le rend de ce fait compatible avec les vieux clients).
DĂ©taillons une installation de base. Nous la rĂ©aliserons sur un serveur web Apache comme serveur CGI. Si Apache nâest pas installĂ© sur votre PC, vous pouvez y remĂ©dier avec une commande :
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
Cela a aussi pour effet dâactiver les modules mod_cgi
, mod_alias
, et mod_env
qui sont nécessaires au fonctionnement du serveur.
Vous allez aussi avoir besoin de paramétrer le groupe Unix des répertoire /srv/git
Ă www-data
pour que votre serveur web puisse lire et Ă©crire dans les dĂ©pĂŽts, parce que lâinstance Apache lançant le script CGI aura (par dĂ©faut) cet utilisateur :
$ chgrp -R www-data /srv/git
Ensuite, nous devons ajouter quelques lignes Ă la configuration dâApache pour quâil lance git-http-backend
comme gestionnaire de tous les chemins du serveur web sous /git
.
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
Si vous ne dĂ©finissez pas la variable dâenvironnement GIT_HTTP_EXPORT_ALL
, Git ne servira aux utilisateurs non authentifiés que les dépÎts comprenant le fichier git-daemon-export-ok
, de la mĂȘme maniĂšre que le daemon Git.
Puis, nous allons indiquer Ă Apache quâil doit accepter les requĂȘtes sur ce chemin avec quelque chose comme :
<Files "git-http-backend">
AuthType Basic
AuthName "Git Access"
AuthUserFile /srv/git/.htpasswd
Require expr !(%{QUERY_STRING} -strmatch '*service=git-receive-pack*' || %{REQUEST_URI} =~ m#/git-receive-pack$#)
Require valid-user
</Files>
Il vous sera nécessaire de créer un fichier .htpasswd
contenant les mots de passe de tous les utilisateurs valides. Voici un exemple dâajout dâun utilisateur schacon
au fichier :
$ htpasswd -c /srv/git/.htpasswd schacon
Il existe des milliers de façons dâauthentifier des utilisateurs avec Apache, il suffira dâen choisir une et de la mettre en place. Lâexemple ci-dessus nâest que le plus simple. Vous dĂ©sirerez sĂ»rement gĂ©rer tout ceci sous SSL pour que vos donnĂ©es soient chiffrĂ©es.
Nous ne souhaitons pas nous appesantir spĂ©cifiquement sur la configuration dâApache, car on peut utiliser un serveur diffĂ©rent ou avoir besoin dâune authentification diffĂ©rente. LâidĂ©e gĂ©nĂ©rale reste que Git est livrĂ© avec un CGI appelĂ© git-http-backend
qui, aprĂšs authentification, va gĂ©rer toute la nĂ©gociation pour envoyer et recevoir les donnĂ©es sur HTTP. Il ne gĂšre pas lâauthentification par lui-mĂȘme, mais peut ĂȘtre facilement contrĂŽlĂ© Ă la couche serveur web qui lâinvoque. Cela peut ĂȘtre rĂ©alisĂ© avec nâimporte quel serveur web gĂ©rant le CGI, donc celui que vous connaissez le mieux.
Note
|
Pour plus dâinformations sur la configuration de lâauthentification dans Apache, rĂ©fĂ©rez-vous Ă la documentation dâApache : https://httpd.apache.org/docs/current/howto/auth.html |