Fork me on GitHub

About

Vous êtes sur le weblog de JN Avila

Pages

Add some pages here, or start a new chapter.

Tag Cloud

Archives

Categories

Links

Alpinux
Aroblog
Hayabousa
Le blog de Raphy Stoller
le blog de Belu
stellamatutina
Da BOop
JS Zone
Irresponsable !
Blablog
Mistress Doom Bazar
Le monde de Cornelius
Why-Note

Search

Latest Comments

Nathalia (Fin de vacances): Tiens, tu blogues perso maintenant ?
DBF (Mes dernières lec…): Plus léger et en phase avec l’actu www.decitre.fr/livres/star -wars-l.. Joyeux Noël, JNA.
JN (Real humans and c…): C’est en anglais parce que je voulais en faire une réponse à l’article initial.
Frérot (Real humans and c…): Waowww, You’ve gone deep into the episodes… By the way, like you, I was kind of fond of “Real Human…
Cami (Les joies de l'in…): Bonjour! Si vous êtes intéressés de traduire logiciels pour Internet, pour PC, pour mobiles ou tout a…
Mathieu (Pas sérieux): …. je vois passer les avions avec bandeaux publicitaires au-dessus des plages depuis la fenêtre de mo…

Stuff

Powered by PivotX - 2.3.3 
XML: RSS Feed 
XML: Atom Feed 

« L'aventure de la rech… | Home | Pauvre Archimède ! »

Petite démonstration de la puissance de Git

Thursday 20 September 2012 at 10:21 pm. Used tags:

La documentation spécifie que Git est capable de traquer les fichiers, y compris lors des renommages. La documentation spécifie aussi que Git est capable d'afficher l'historique de fichiers à travers les renommages, et même de donner l'origine des lignes d'un fichiers si celles-ci ont été copiées d'un autre fichier.

Pour l'instant, je vais seulement voir ce que Git a dans le ventre pour ce qui est du suivi des renommages.

Voici ci-dessous, une petite manip que je vais vous expliquer :

001: [jnavila@coriandre ~]$ mkdir test
002: [jnavila@coriandre ~]$ cd test/
003: [jnavila@coriandre test]$ git init
004: Initialized empty Git repository in /home/jnavila/test/.git/
005: [jnavila@coriandre test (master #)]$ cp -r ../bin .
006: [jnavila@coriandre test (master #)]$ ls
007: bin
008: [jnavila@coriandre test (master #)]$ cd bin/
009: [jnavila@coriandre bin (master #)]$ ls
010: emacs  git-test-sequence  myemacs  pulseaudio  pulseaudio_airplay
011: [jnavila@coriandre bin (master #)]$ cd ..
012: [jnavila@coriandre test (master #)]$ git add bin
013: [jnavila@coriandre test (master #)]$ git commit
014: Waiting for Emacs...
015: [master (root-commit) 30dd8fa] premier import
016:  5 files changed, 148 insertions(+), 0 deletions(-)
017:  create mode 120000 bin/emacs
018:  create mode 100755 bin/git-test-sequence
019:  create mode 100755 bin/myemacs
020:  create mode 100755 bin/pulseaudio
021:  create mode 100755 bin/pulseaudio_airplay
022: [jnavila@coriandre test (master)]$ git branch toto
023: [jnavila@coriandre test (master)]$ emacs bin/pulseaudio
024: Waiting for Emacs...
025: [jnavila@coriandre test (master *)]$ git add bin/pulseaudio
026: [jnavila@coriandre test (master +)]$ git commit
027: Waiting for Emacs...
028: [master ba78a66] modif pulseaudio
029:  1 files changed, 0 insertions(+), 3 deletions(-)
030: [jnavila@coriandre test (master)]$ git checkout toto
031: Switched to branch 'toto'
032: [jnavila@coriandre test (toto)]$ git mv bin/pulseaudio pulse
033: [jnavila@coriandre test (toto +)]$ git commit
034: Waiting for Emacs...
035: [toto 81a7775] déplacement pulse en pulseaudio
036:  1 files changed, 0 insertions(+), 0 deletions(-)
037:  rename bin/pulseaudio => pulse (100%)
038: [jnavila@coriandre test (toto)]$ git merge master
039: Merge made by recursive.
040:  pulse |    3 ---
041:  1 files changed, 0 insertions(+), 3 deletions(-)
042: [jnavila@coriandre test (toto)]$

Voyons par le menu ce qui se passe :

  • Lignes 1 à 4 : création d'un répertoire de test et initialisation git
  • Lignes 5 à 11 : population du projet et petite visite des fichiers disponibles
  • Lignes 12 à 21 : premier commit sur la branche master , c'est la racine de master avec tous les fichiers
  • Lignes 22 : création d'une branche toto (sans basculer dessus). On se la garde pour plus tard.
  • Lignes 23 à 29 : édition du fichier bin/pulseaudio dans lequel 3 lignes ont été effacées, et commit du résultat
  • Lignes 30 à 31 : basculement sur la branche toto
  • Ligne 32 : déplacement de bin/pulse_audio en pulse
  • Lignes 33 à 37 : commit du résultat. Git indique un "rename" du fichier
  • Ligne 38 : Maintenant, il est temps de mettre Git à l'épreuve. Que se passe-t-il si je demande la fusion de la branche master. Remarquez bien que sur master, le fichier a subi une modification en place, tandis que sur la branche toto, le fichier a été déplacé. Vouloir appliquer un patch généré à partir du diff de master sur toto n'aurait aucun sens.
  • Lignes 39 à 41 : Git fait bien ce que j'attendais de lui. Il applique la modification sur le fichier déplacé et efface les trois lignes de pulse

Voilà une manip' qui m'aurait fait frémir il y a quelques temps sous Subversion. Ici... même pas peur !

No comments

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Del.icio.us
  • Digg
  • Facebook
  • Google
  • LinkedIn
  • StumbleUpon
  • Tumblr
  • Twitter




(optional field)
(optional field)
Remember personal info?
Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.