Installation et configuration de Git sur Debian et initialisation d'un dépôt Git
On trouve facilement beaucoup de documentation sur l'utilisation de GIT, mais quand il s'agit de l'installation et de la configuration d'un serveur ça devient plus rare. Ce n'est pas une tache très compliquée, mais j'ai du croiser beaucoup de docs et naviguer dans les chapitres du livre ProGit. Le plus dur n'a pas été l'installation mais obtenir une procédure d'initialisation des nouveaux projets.
1. Installation de Git
Avant tou il faut être Root sur le serveur.
L'installation est très simple sur Debian, il suffit d'utiliser les paquets du dépot:
> aptitude install git-core
Je vais utiliser le protocol ssh pour GIT, j'ai donc besoin d'un utilisateur git sur le serveur avec un dossier Home. J'y stockerai les repository de GIT.
> adduser git
2. Configuration des utilisateurs
Ensuite il faut créer une configuration minimum pour chaque utilisateur.
> su user_name > cd > git config --global user.name "user_name" > git config --global user.email "user_name@domaine.tld"
Cela va créer un fichier .gitconfig à la racine du home de l'utilisateur. Les champs user.name et user.email sont le minimum requis pour utiliser GIT, s'il ne sont pas setter, GIT renverra systèmatiquement une erreur.
On peut completer ce fichier pour avoir par exemple de la coloration dans les commandes de git ou des alias.
[user] name = user_name email = user_name@test.com #Mise en couleur des messages [color] ui = auto [color "branch"] current = yellow reverse local = yellow remote = green [color "diff"] meta = yellow bold frag = magenta bold old = red bold new = green bold [color "status"] added = yellow changed = green untracked = cyan #Création d'alias [alias] co = checkout st = status ci = commit
Avec Git on utilise beaucoup (tout le temps) des branches, il est donc utile de savoir dans quelle branche on se situe. Pour cela il faut éditer ou créer le fichier .bash_profile ou .profile à la racine du compte de l'utilisateur et y ajouter:
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi function parse_git_branch { git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/' } function proml { local LIGHT_GREEN="\[\033[1;32m\]" local WHITE="\[\033[1;37m\]" local LIGHT_GRAY="\[\033[0;37m\]" case $TERM in xterm*) TITLEBAR='\[\033]0;\u@\h:\w\007\]' ;; *) TITLEBAR="" ;; esac PS1="${TITLEBAR}\ $LIGHT_GRAY\u@\h:$WHITE\w$LIGHT_GREEN\$(parse_git_branch)\ $LIGHT_GRAY\$ " PS2='> ' PS4='+ ' } proml
Une dernière chose à faire, ajouter les clés des utilisateurs au compte GIT. Cela permettra d'authentifier les commiteurs plus facilcement.
Si vous n'avez pas de clé, c'est simple à créer. Je vous conseilles de ne pas mettre de mot de passe à votre clé, sinon vous aurez à le saisir à chaque commande GIT faisant appel au repository Origin.
> ssh-keygen -t rsa -C "user@domain.tldd"
Ensuite il faut copier la clé publique dans la liste des clés autorisées du compte git.
> ssh-copy-id -i ~/.ssh/id_rsa.pub git@localhost
Normalement vous devirez pouvoir vous connecter au compte GIT sans avoir à taper votre mot de passe avec la commande.
> ssh git@localhost
Si ce n'est pas le cas, le problème vient peut être de la configuration ssh du serveur. Vérifiez que l'authentification par clé est authorisée dans le fichier /etc/ssh/sshd_config
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys
3. Initialisation d'un nouveau dépôt GIT
Si vous avez l'habitude de créer des dépots SVN, avec GIT c'est très différent. N'importe quel utilisateur autre que le user git peut initier un nouveau repository. Je commence avec l'utilisateur ulrich dans son home:
> su ulrich > cd
Je crée un dossier portant le nom de mon projet. Ensuite j'ajoute un fichier README.txt, il faut un premier fichier à commiter pour réaliser l'initialisation puis j'initialise le dépôt.
> mkdir projet1 > cd projet1 > git init > touch README.txt > git add README.txt > git add . > git commit -m "init du projet"
A l'issue du commit vous devriez avoir un message de GIT vous indiquant qu'un fichier a été ajouté. Si vous avez configurer le visualisation des branches, vous devriez voir apparaitre le nom de la branche master. Ne surtout pas oublier la commande git add . qui permet d'ajouter les fichiers cachés.
Le dépôt existe mais il n'est pas encore "centralisé" sur le compte GIT. On va réaliser une copie un peu particluier de notre nouveau dépôt puis on la copiera sur le compte git.
> cd .. > git clone --bare projet1 projet1.git > scp -r projet1.git git@localhost:
On peut supprimer projet1.git, il ne nous sert plus à rien. A partir de ce moment, n'importe quel autre utilisateur peut faire un clone du repository et commencer à commiter dedans.
> git clone git@localhost:projet1.git
Toujours avec mon compte ulrich, il faut que j'indique à mon dépôt local où est le dépôt origin.
> git remote add origin git@localhost:projet1.git
Il ne reste plus qu'à travailler et à commiter. J'espère que cet article vous sera autant utile à vous qu'à moi.
Réponse de Ulrich le 16 juil. 2017