-
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 |