logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


git-df

(testé - smolski 26/10/2012) Le retour sur le forum est ici :

  • Objet : git pour df
  • Niveau requis : AVISÉ
  • Commentaires : Ce tuto est destiné essentiellement aux participants des projets df via le dépôt git installé sur le serveur df.
  • Débutant, à savoir :

Utiliser GNU/Linux en ligne de commande, tout commence là !. :-)

Installation

Terminal root :

Mettre son système à jour :

aptitude update
aptitude safe-upgrade

Installer git-core :

aptitude install git-core
Tout le reste du tuto se passe en terminal utilisateur sauf indication contraire.

Initialisation

Tapez :

git config --global user.name "votre pseudo du forum" Majuscules ou espace autorisés.
git config --global user.email "votre@mail.com"
git config --global color.ui true

Ces commandes vont créer un fichier dans votre répertoire utilisateur qui sera utilisé par tout vos projets. Par défaut, ce fichier est ~/.gitconfig et il contiendra quelque chose comme ça :

    [user]
      name = votre pseudo du forum
      email = votre@mail.com

Ce name vous servira en signature de vos interventions et dans vos tag.

Clé SSH

Créer une paire de clés ssh1).

nom_ou_pseudo = Votre nom ou votre pseudo, sans espace ni accent et en minuscule2) !
ssh-keygen -f ~/.ssh/df-git-nom_ou_pseudo
Il vous sera demandé si vous voulez ajouter une passphrase, à vous de voir si cela vous paraît nécessaire… Notez que si vous en saisissez une, il vous faudra la retaper à chaque nouvelle session de votre pc avant d'utiliser les dépôts.

Ce qui donnera au final dans le répertoire ~/.ssh :

  1. un fichier de clé privée3)
  2. et un de clé publique4)

Vérifiez :

ls ~/.ssh
df-git-nom_ou_pseudo  df-git-nom_ou_pseudo.pub

Il vous faudra communiquer au captnfab le fichier de la clé publique5) df-git-nom_ou_pseudo.pub, par email ou depuis le forum df par mp par exemple…

Cette clé publique n'est pas confidentielle. Elle permet simplement au serveur de vérifier que c'est bien vous qui vous connectez avec votre clé privée !

En réponse, vous recevrez de ce cher matelot une configuration à mettre dans le fichier ~/.ssh/config, fichier à créer6) s'il n'y est pas :

 ~/.ssh/config

Ensuite, créez un répertoire dans votre /home/user (c'est le lieu le plus simple) qui vous servira de répertoire où faire transiter vos travaux git mis en commun sur le git-df.
Par exemple :

mkdir ~/projets-df

passphrase

Si vous avez créé une passphrase tapez :

ssh-add ~/.ssh/df-git-nom_ou_pseudo

Cette ligne ajoute la passphrase en mémoire en la donnant à ssh-agent. ;-)

Cloner un projet déjà en cours

Se placer dans ce répertoire créé pour git :

cd ~/projets-df

Demander le téléchargement du répertoire du projet par clonage ainsi :

git clone df-git-nom_ou_pseudo:le_projet_commun

Vous aurez à disposition personnelle ce répertoire et tout ce qu'il contient mis dans le répertoire git d'où vous avez lancé la commande :

 ~/projets-df/le_projet_commun

Utilisation

Avant de faire un listing des commandes, voyons un cas typique d'utilisation.

TP 1 : Exemple d'utilisation basique

Exemple d'utilisation basique

Deux utilisateurs fictifs, jojo et cap ont clonés un dépôt git bac-a-sable dans le dossier ~/df-git/. Voici un transcript de ce qu'a fait Cap pour en arriver là (Jojo ayant fait quelque chose de similaire).

cap@bicoque:~$ mkdir ~/df-git/
cap@bicoque:~$ cd ~/df-git/
cap@bicoque:~/df-git$ git clone df-git-cap:bac-a-sable
cap@bicoque:~/df-git$ cd bac-a-sable/
cap@bicoque:~/df-git/bac-a-sable$

Jojo veut vérifier s'il y a des nouveautés sur le dépôt :

jojo@creperie:~$ cd ~/df-git/bac-a-sable/
jojo@creperie:~/df-git/bac-a-sable$ git pull
Already up-to-date.

git pull: pull signifie « tirer » en anglais, on tire les mises à jour depuis le serveur, vers notre copie locale)

Visiblement, pas de mise à jour, le dépôt est déjà up-do-date.

Jojo veut alors créer un fichier crêpes.miam contenant sa dernière trouvaille.

Il ouvre son éditeur de texte préféré et crée le-dit fichier, de sorte que…

jojo@creperie:~/df-git/bac-a-sable$ ls -l
total 4
-rw-r--r-- 1 jojo jojo  42 oct.  32 25:61 crêpes.miam

Il veut maintenant enregistrer ce changement dans le dépôt.

Comme le fichier crêpes.miam n'existait pas, il doit d'abord demander à git de le surveiller.

jojo@creperie:~/df-git/bac-a-sable$ git add crêpes.miam
jojo@creperie:~/df-git/bac-a-sable$

Avant de réellement sauvegarder ces modifications.

jojo@creperie:~/df-git/bac-a-sable$ git commit

S'ouvre alors son éditeur de texte préféré contenant le texte suivant:

  
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#>new file:   "cr\303\252pes.miam"

On voit que le message indique qu'il y a un nouveau fichier “cr\303\252pes.miam” (encodage ascii du nom utf8 du fichier). Il doit indiquer dans cette fenêtre un résumé des opérations effectuées, sur la première ligne. Puis, si nécessaire, une description plus détaillée en dessous (en sautant une ligne). Voici le fichier finalisé de Jojo.

Ma nouvelle recette de crêpe :-P

Un peu moins de beurre et un peu plus de bière, que du bon :)
Coquine s'est régalée, trôôôôô !  
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#>new file:   "cr\303\252pes.miam"

Il enregistre et quitte son éditeur de texte.

[master 7774c8a] Ma nouvelle recette de crêpe :-P
 1 file changed, 1 insertion(+)
 create mode 100644 "cr\303\252pes.miam"
jojo@creperie:~/df-git/bac-a-sable$

Les modifications sont donc bien enregistrées sur le dépôt, mais toujours localement sur la machine à Jojo. Pour envoyer ses modifications vers le serveur DF, il doit lancer la commande suivante:

jojo@creperie:~/df-git/bac-a-sable$ git push
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 388 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To df-git-jojo:bac-a-sable
   d83719f..7774c8a  master -> master

Comme sur IRC Jojo vante à Cap le goût inégalable de sa nouvelle recette, ce dernier décide d'aller chercher la recette de jojo.

cap@bicoque:~/df-git/bac-a-sable$ git pull
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From df-git-cap:bac-a-sable
   d83719f..7774c8a  master     -> origin/master
Updating d83719f..7774c8a
Fast-forward
 "cr\303\252pes.miam" |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 "cr\303\252pes.miam"

Et voilà :

cap@bicoque:~/df-git/bac-a-sable$ ls -l
total 4
-rw-r--r-- 1 cap cap  42 oct.  32 25:61 crêpes.miam

Cap veut réorganiser le dépôt pour mettre la recette à Jojo dans un dossier recettes.

Il commence par créer un dossier et il indique à git la nouvelle position / le nouveau nom du fichier crêpes.miam. Il enregistre ensuite ses modifications en faisant un commit.

$ mkdir recettes
$ git mv crêpes.miam recettes/

git commit -a permet ensuite d'enregistrer les modifications faites pour tous les fichiers qui étaient déjà suivis par git. Ie. pour lesquels quelqu'un avait déjà fait git add avant.

git push envoie les modifications sur le serveur.

$ git commit -a
[master 7e63d41] Rangement.
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename "cr\303\252pes.miam" => "recettes/cr\303\252pes.miam" (100%)
$ git push
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 365 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To df-git-cap:bac-a-sable
   7774c8a..7e63d41  master -> master
$

Liste des commandes

Placez-vous dans le répertoire cloné du fichier_travail

cd ~/projets-df/le_projet_commun/

Vous pouvez modifier ou compléter le fichier_travail, par exemple avec vim :

vim fichier_travail

Lorsque vous avez fini et souhaitez partager ce que vous avez réalisé, vous l'ajoutez :

add

git add fichier_travail

commit

Vous le commitez :

git commit -a

Vous aurez alors accès à la rédaction de ce commit ainsi :

  1 Tests matutinaux d'utilisaton du git-df <- Ici une ligne vierge qui sert au titrage référence de votre intervention dans le projet.
  2 
  3 Ici est un endroit à ajouter si on le désire pour raconter un historique qui serait trop long dans le titre du dessus.
  4 Bien respecter l'interligne vierge entre les deux.
  5 # Please enter the commit message for your changes. Lines starting
  6 # with '#' will be ignored, and an empty message aborts the commit.
  7 #
  8 # Committer: votre pseudo du forum. Votre mail.
  9 #
 10 # On branch master
 11 # Changes to be committed:
 12 #   (use "git reset HEAD <file>..." to unstage)
 13 #
 14 #       modified:   test
 15 #

En enregistrant tout cela dans votre terminal vous obtiendrez ensuite :

[master 4daaf19] Tests matutinaux d'utilisaton du git-df
 Committer: votre pseudo du forum. Votre mail.

If the identity used for this commit is wrong, you can fix it with:

    git commit --amend --author='Your Name <you@example.com>'

 1 files changed, 1 insertions(+), 1 deletions(-)

push

Vous le poussez vers le git-df :

git push

Vous obtiendrez alors l'édition de ces lignes :

Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 432 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To df-git-nom_pseudo:fichier_travail
   xxxxxxx..xxxxxxx  master -> master
Already up-to-date.

pull

Plus tard, pour le tirer de nouveau vers vous avec toutes les interventions ajoutées :

git pull

Et ainsi de suite…

Création projet

À suivre, jeu sais pas encore faire ça… ;-)

Glossaire

  1. commit : Dans un gestionnaire de suivi de version comme git, chaque contributeur, après avoir apporté des modifications de son côté, peut les ajouter au projet principal. Cela s'appelle faire un commit. Le gestionnaire de version permet, en cas de problème, de chercher parmis tous les commit la modification qui posait problème.
  2. add : Cela sert à ajouter un nouveau fichier au dépot. Ce n'est pas une simple modification d'un fichier déja existant, comme avec commit.
  3. push : (pousser) Cela sert à envoyer les modifications que vous avez apporté (les commits) sur le dépot principal. En cas de conflit avec des modifications d'un autre utilisateur, vous pouvez les résoudre à la main
  4. pull : Cela vous permet d'être à jour avec le dépot, et les modifications apportées par les autres.

Lien et remerciement

Tuto référentiel :

Merci à enicar et au captnfab ;-)

2)
En principe vous avez le droit. mais notre tuto et pour éviter les erreurs, on adoptera cette convention
3)
df-git-nom_ou_pseudo
4)
df-git-nom_ou_pseudo.pub
5)
ou son contenu
atelier/git-df/git-df.1351357882.txt.gz · Dernière modification: 27/10/2012 19:11 par captnfab

Pied de page des forums

Propulsé par FluxBB