Serveur Git sur Debian 1/ Installer le paquet git. On a aussi besoin du serveur ssh qu'on utilisera des deux manières (normale et en SFTP) et sans droit root (sauf pour l'installation là tout de suite). On prévoira aussi des sauvegardes régulières, etc. Perdre du code, c'est moche. 2/ Créer un dossier pour git (avec mkdir), quelques suggestions: /opt/git /var/data/git /home/git La dernière commande possibilité concerne le cas (pas forcément souhaitable) où on crée un utilisateur nommé git (taper "adduser git"), dont le mot de passe sera connu de tous les utilisateurs. J'ai choisi de le mettre dans /var/data parce que j'y ai déjà les données d'un site apache. Et puis c'est pas loind des sites web qui sont dans /var/www. 3/ Y créer un dossier pour le dépôt: mkdir /var/data/git/my_repos.git Je lui ai donné le nom "par convention": my_repos.git, bien que nommer les dépôts par projet ou par utilisateur me semblait plus logique. On pourra toujours en créer d'autre plus tard. Mon but est d'atteindre un dossier ou un autre par une adresse du type: git.ordipolo.fr/nom_du_dépôt. Il faudrait aussi que le dossier supporte deux types de clients git: l'appli console ou appli graphique normale et éventuellement plus tard un site apache/php. 4/ Concernant les droits, je ferais une suggestion: On a besoin que n'importe quel utilisateur puisse écrire dans my_repos.git, et notamment l'utilisateur du serveur apache "www-data". Ainsi par sécurité, on va cacher le dossier de niveau inférieur, ce qui nous fait: chmod 711 /var/data/git chmod 777 /var/data/git/my_repos.git Les utilisateurs devraient ainsi pouvoir atteindre le dépôt et placer des projets. Inconvénient: il faut être root pour créer un nouveau dépôt. Ayant créé ces dossiers en tant que root, il reste bien le propriétaire des deux dossiers. Nous pouvons maintenant nous déconnecter du compte root, taper "exit" ou faire un "Ctrl + d" 5/ Initialiser le dépôt depuis ssh cd /var/data/git/my_repos.git git init --bare Noter bien le paramètre --bare qui sert à initialiser un projet vide. C'est ce qu'il faut faire sur un serveur, on placera les fichiers dedans ensuite. Un client n'a lui pas besoin de ce paramètre. Si on ajoute --shared, le dossier est autorisé en écriture au groupe git. Nous pouvons maintenant nous déconnecter si nous étions connecté avec ssh. Le dépôt est utilisable par les clients. Ils peuvent procéder comme avec n'importe quel serveur git. 6/ Création d'un dépôt local côté client. Configuration prérequise (globale signifie pour tous dépôts): git config --global user.name "mon nom" git config --global user.email "mon_e-mail@exemple.com" git config --global init.defaultBranch master Un utilisateur crée un projet 'presque vide': mkdir monprojet cd monproject git init Ajouter au moins un fichier au projet (le push échoue à vide) git add "fichier" git commit -m 'première validation' git remote add origin polo@ordipolo.fr:/var/data/git/tuto_git git push origin master Ce que tout le mode va faire ensuite: git clone mon_nom@ordipolo.fr:/var/data/git/tuto_git cd projet nano "fichier" git commit -am 'correction du fichier "fichier"' git push origin master Note: avec la syntaxe "polo@ordipolo.fr:/chemin/..." on comprend que ssh est utilisé. C'est la méthode recommandée. Autres méthode: - connexion locale avec le chemin sans l'identifiant et le nom du serveur: utile si on utilise NFS. - connexion git: non sécurisé mais plus rapide, intéressant pour un dépôt public.