-
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.8 Git sur le serveur - GitLab
GitLab
GitWeb reste tout de mĂȘme simpliste. Si vous cherchez un serveur Git plus moderne et complet, il existe quelques solutions libres pertinentes. Comme GitLab est un des plus populaires, nous allons prendre son installation et son utilisation comme exemple. Cette solution est plus complexe que lâoption GitWeb et demandera indubitablement plus de maintenance, mais elle est aussi plus complĂšte.
Installation
GitLab est une application web reposant sur une base de donnĂ©es, ce qui rend son installation un peu plus lourde que certains autres serveurs Git. Celle-ci est heureusement trĂšs bien documentĂ©e et supportĂ©e. GitLab recommande fortement dâinstaller GitLab sur votre serveur via le paquet officiel Omnibus GitLab.
Les autres options dâinstallation de GitLab sont :
-
GitLab Helm chart, pour une utilisation avec Kubernetes,
-
des paquets GitLab dockerisés pour une utilisation dans Docker,
-
depuis les fichiers source,
-
Avec un fournisseur Cloud tel que AWS, Google Cloud Platform, Azure, OpenShift et Digital Ocean.
Pour de plus amples informations, référez-vous au readme de GitLab Community Edition (CE).
Administration
Lâinterface dâadministration de GitLab passe par le web.
Pointez simplement votre navigateur sur le nom dâhĂŽte ou lâadresse IP oĂč GitLab est hĂ©bergĂ© et identifiez-vous comme administrateur.
Lâutilisateur par dĂ©faut est admin@local.host
et le mot de passe par défaut est 5iveL!fe
(quâil vous sera demandĂ© de changer dĂšs la premiĂšre connexion).
Une fois identifiĂ©, cliquez sur lâicĂŽne « Admin area » dans le menu en haut Ă droite.
Utilisateurs
Les utilisateurs dans GitLab sont des comptes qui correspondent Ă des personnes.
Les comptes utilisateurs ne sont pas trĂšs complexes ; ce sont principalement des collections dâinformations personnelles rattachĂ©es Ă chaque information dâidentification.
Chaque compte utilisateur fournit un espace de nommage, qui est un rassemblement logique des projets appartenant Ă cet utilisateur.
Si lâutilisateur jane a un projet appelĂ© projet, lâURL du projet est https://serveur/jane/projet
.
Il existe deux maniĂšres de supprimer un utilisateur.
Bloquer (Blocking
) un utilisateur lâempĂȘche de sâidentifier sur lâinstance Gitlab, mais toutes les donnĂ©es sous lâespace de nom de cet utilisateur sont prĂ©servĂ©es, et les commits signĂ©s avec lâadresse courriel de cet utilisateur renverront Ă son profil.
DĂ©truire (Destroying
) un utilisateur, par contre, lâefface complĂštement de la base de donnĂ©es et du systĂšme de fichiers.
Tous les projets et les données situées dans son espace de nom sont effacés et tous les groupes qui lui appartiennent sont aussi effacés.
Il sâagit clairement dâune action plus destructive et permanente, et son usage est assez rare.
Groupes
Un groupe GitLab est un assemblage de projets, accompagnĂ© des informations de droits dâaccĂšs Ă ces projets.
Chaque groupe a un espace de nom de projet (de la mĂȘme maniĂšre que les utilisateurs), donc si le groupe formation a un projet matĂ©riel, son URL sera https://serveur/formation/matĂ©riel
.
Chaque groupe est associĂ© Ă des utilisateurs, dont chacun dispose dâun niveau de permissions sur les projets du groupe et sur le groupe lui-mĂȘme.
Ces niveaux sâĂ©chelonnent de invitĂ©Â : Guest
(tickets et discussions seulement) à propriétaire : Owner
(contrĂŽle complet du groupe, ses membres et ses projets).
Les types de permissions sont trop nombreux pour ĂȘtre Ă©numĂ©rĂ©s ici, mais GitLab fournit un lien trĂšs utile sur son Ă©cran dâadministration.
Projets
Un projet GitLab correspond grossiĂšrement Ă un dĂ©pĂŽt Git unique. Tous les projets appartiennent Ă un espace de nom unique, que ce soit un utilisateur ou un groupe. Si le projet appartient Ă un utilisateur, le propriĂ©taire du projet contrĂŽle directement les droits dâaccĂšs au projet ; si le projet appartient Ă un groupe, le niveau de permission de lâutilisateur pour le groupe est aussi pris en compte.
Tous les projets ont un niveau de visibilité qui permet de contrÎler qui a accÚs en lecture aux pages et au dépÎt de ce projet.
Si un projet est privĂ© (Private), lâaccĂšs au projet doit ĂȘtre explicitement accordĂ© par le propriĂ©taire du projet Ă chaque utilisateur.
Un projet interne (Internal) est visible par tout utilisateur identifié, et un projet public (Public) est un projet visible par tout le monde.
Notez que ces droits contrĂŽlent aussi bien les accĂšs pour git fetch
que les accĂšs Ă lâinterface utilisateur web du projet.
Crochets (Hooks)
GitLab inclut le support pour les crochets, tant au niveau projet que systĂšme. Pour ces deux niveaux, le serveur GitLab lance des requĂȘtes HTTP POST contenant un JSON de description lorsque certains Ă©vĂ©nements prĂ©cis arrivent. Câest une excellent moyen de connecter vos dĂ©pĂŽts Git et votre instance GitLab avec le reste de vos automatisations de dĂ©veloppement, telles que serveurs dâintĂ©gration continue, forum de discussion et outils de dĂ©ploiement.
Usage de base
La premiÚre chose à faire avec GitLab est de créer un nouveau projet.
Pour cela, il suffit de cliquer sur lâicĂŽne +
sur la barre dâoutils.
On vous demande le nom du projet, à quel espace de nom il appartient, et son niveau de visibilité.
La plupart des configurations demandĂ©es ici ne sont pas permanentes et peuvent ĂȘtre rĂ©ajustĂ©es plus tard grĂące Ă lâinterface de paramĂ©trage.
Cliquez sur Create Project
pour achever la création.
Une fois le projet créé, on peut le connecter à un dépÎt Git local.
Chaque projet est accessible sur HTTPS ou SSH, qui peuvent donc ĂȘtre utilisĂ©s pour un dĂ©pĂŽt distant.
Les URLs sont visibles en haut de la page du projet.
Pour un dépÎt local existant, cette commande crée un dépÎt distant nommé gitlab
pointant vers lâhĂ©bergement distant :
$ git remote add gitlab https://serveur/espace_de_nom/projet.git
Si vous nâavez pas de copie locale du dĂ©pĂŽt, vous pouvez simplement taper ceci :
$ git clone https://serveur/espace_de_nom/projet.git
Lâinterface utilisateur web donne accĂšs Ă diffĂ©rentes vues utiles du dĂ©pĂŽt lui-mĂȘme. La page dâaccueil de chaque projet montre lâactivitĂ© rĂ©cente et des liens alignĂ©s en haut vous mĂšnent aux fichiers du projet et au journal des commits.
Coopérer
Le moyen le plus simple de coopérer sur un projet GitLab consiste à donner à un autre utilisateur un accÚs direct en écriture sur le dépÎt Git.
Vous pouvez ajouter un utilisateur à un projet en sélectionnant la section Members
des paramĂštres du projet et en associant le nouvel utilisateur Ă un niveau dâaccĂšs (les diffĂ©rents niveaux dâaccĂšs sont abordĂ©s dans Groupes).
En donnant un niveau dâaccĂšs Developer
ou plus à un utilisateur, cet utilisateur peut pousser des commits et des branches directement sur le dépÎt sans restriction.
Un autre moyen plus dĂ©couplĂ© de collaborer est dâutiliser des requĂȘtes de tirage (pull request).
Cette fonction permet Ă nâimporte quel utilisateur qui peut voir le projet dây contribuer de maniĂšre contrĂŽlĂ©e.
Les utilisateurs avec un accĂšs direct peuvent simplement crĂ©er une branche, pousser des commits dessus et ouvrir une requĂȘte de tirage depuis leur branche vers master
ou toute autre branche.
Les utilisateurs qui nâont pas la permission de pousser sur un dĂ©pĂŽt peuvent en faire un fork (crĂ©er leur propre copie), pousser des commits sur cette copie et ouvrir une requĂȘte de tirage depuis leur fork vers le projet principal.
Ce modÚle permet au propriétaire de garder le contrÎle total sur ce qui entre dans le dépÎt et quand, tout en autorisant les contributions des utilisateurs non fiables.
Les requĂȘtes de fusion (merge requests) et les problĂšmes (issues) sont les principaux moyens pour mener des discussions au long cours dans GitLab. Chaque requĂȘte de fusion permet une discussion ligne par ligne sur les modifications proposĂ©es (qui permettent une sorte de revue de code lĂ©gĂšre), ainsi quâun fil de discussion gĂ©nĂ©ral. RequĂȘtes de fusion et problĂšmes peuvent ĂȘtre assignĂ©s Ă des utilisateurs ou assemblĂ©s en jalons (milestones).
Cette section se concentre principalement sur les parties de GitLab dĂ©diĂ©es Ă Git, mais câest un systĂšme assez mature qui fournit beaucoup dâautres fonctions qui peuvent aider votre Ă©quipe Ă coopĂ©rer. Parmi celles-ci figurent les wikis, les murs de discussion et des outils de maintenance du systĂšme. Un des bĂ©nĂ©fices de GitLab est que, une fois le serveur paramĂ©trĂ© et en marche, vous nâaurez pas besoin de bricoler un fichier de configuration ou dâaccĂ©der au serveur via SSH ; la plupart des tĂąches gĂ©nĂ©rales ou dâadministration peuvent se rĂ©aliser Ă travers lâinterface web.