Git color graph

Tags:: git

Suite à deux excellents billets proposés par Gérald - Introduction à Git Partie 1 - et Partie 2 je vais vous présenter quelques petits "trucs" que j'utilise sur Git. Aujourd'hui parlons l'affichage de votre dépôt, dans une console, mais en mode "pretty"

Je sais qu'il existe un outil bien sympathique nommé "tig" (git à l'envers) qui est une interface assez bien fichue pour avoir une vue assez "lisible" de votre dépôt. Mais sans avoir à installer un outils en plus, git permet déjà de voir un "graph" de vos commits, merges et branches, et ce de manière propre.

Je vous montre les étapes de tests que j'ai effectué, mais souvenez vous qu'à la fin de l'article il y a la manière "rapide" qui est ni plus ni moins que l'a création d'un alias de commande à git. Pour le moment, laissez moi vous montrer comment j'ai procédé.

En fait, tout va passer par la commande "git log" dont des options vont être ajoutées. Si vous tapez simplement "git log" dans votre console, vous aurez un log, certes lisible, mais pas très sexy. Passons par la première options que j'aime bien:


git log --graph
*   commit 2a9910f060f7c75f93499307882e29977a3e8c57
|\  Merge: b760954 d50d7d9
| | Author: Patrice FERLET <metal3d@gmail.com>
| | Date:   Mon Sep 26 13:14:58 2011 +0200
| |
| |     Merge branches 'developpement' and 'master'
| |   
| * commit d50d7d980664a061dbde83ee3ef3d8931fde5c97
| | Author: Patrice FERLET <metal3d@gmail.com>
| | Date:   Mon Sep 26 13:09:14 2011 +0200
| |
| |     Append those files to be integrated into pypi... and make some dist packages
| |   
| * commit 8d775cb8fd1413f761404d423f9792a800a2e5ad
| | Author: Patrice FERLET <metal3d@gmail.com>
| | Date:   Mon Sep 26 13:08:42 2011 +0200
| |
| |     This is an alpha release for now, not a beta
| |     Added Classifier section for pypi
| |   
* | commit b760954c324262a2e84b5c85d83a2fd8aa41d50f
|/  Author: Patrice FERLET <metal3d@gmail.com>
|   Date:   Mon Sep 26 12:46:15 2011 +0200
|   
|       Merge branches 'developpement' and 'master'

* commit 5120b24072c31f5fe147a4b8ddc955594c613606
| Author: Patrice FERLET <metal3d@gmail.com>
| Date:   Mon Sep 26 12:45:48 2011 +0200
...
 

C'est déjà pas mal... nous avons ici une représentation des branches ainsi que le log de commit, l'auteur, etc... Bon admettez que c'est un peu "verbeux" et que certaines informations ne sont pas forcément "utiles". Ajoutons une seconde option "--pretty=oneline"


 git log --graph --pretty=oneline
 *   2a9910f060f7c75f93499307882e29977a3e8c57 Merge branches 'developpement' and 'master'
 |\ 
 | * d50d7d980664a061dbde83ee3ef3d8931fde5c97 Append those files to be integrated into pypi... and make some dist
 | * 8d775cb8fd1413f761404d423f9792a800a2e5ad This is an alpha release for now, not a beta Added Classifier secti
 * | b760954c324262a2e84b5c85d83a2fd8aa41d50f Merge branches 'developpement' and 'master'
 |/ 
 * 5120b24072c31f5fe147a4b8ddc955594c613606 What next section correction
 * e5fbc7c9401e5719e5954f280e3074138fe9daae Merge branches 'master' and 'developpement' into developpement
 * 413e236a5ee30895df7bd254f58dc00bee06c816 Changes english errors (excuse my english, I'm french...)
 *   a4d8baa02d46a8e91b2458f58f9540c906fd5db4 Merge branches 'developpement' and 'master'
 |\ 
 | * 811c711b894bf929e720e4fa77dc9c887f3542b1 English errors correction (thanks vim spell :))
 | * dae1d7a4c2cc32b0703436383fe2a3c187c04bcc Excpetion declaration to raise proper errors
 | * 9f1569f85248e502473949cabd930b71048ac72d Cython allow to declare enum without given values. Values are taken
 * |   fa56bdda9029f9f5e35e8fc3b25ecfe9dd7b1f2a Merge branches 'developpement' and 'master'
 |\ \ 
 | |/ 
 | * e8e732b94a307f78baa5384ad196b18792b98c47 Change example in code doc comment
 | * 4e5db330a9a5f30ad1986e64f12ba34b786b6abc Removed "Queue" in thread example
 | * e0163a32cd110e94e67cdc38f315b0652583e151 Better documentation
 | * adf50978af73c90b31066c6cb2fcdbb0ea7125bb Back to a Quvi classes, that allows to use several Quvi instances
 | * f9f9944b8e5348a6e026c9af14dcf33f4a4ebaaa Append additionnal information on setup
 * |   2c9e704e021434e1b39d16c79225a687c5408fbc Merge branches 'developpement' and 'master'
 |\ \ 

 ...
 

Ah, là on avance, bon on va réduire le checksum de commit avec "--abbrev-commit":


 git log --graph --pretty=oneline --abbrev-commit
 *   2a9910f Merge branches 'developpement' and 'master'
 |\ 
 | * d50d7d9 Append those files to be integrated into pypi... and make some dist packages
 | * 8d775cb This is an alpha release for now, not a beta Added Classifier section for pypi
 * | b760954 Merge branches 'developpement' and 'master'
 |/ 
 * 5120b24 What next section correction
 * e5fbc7c Merge branches 'master' and 'developpement' into developpement
 * 413e236 Changes english errors (excuse my english, I'm french...)
 *   a4d8baa Merge branches 'developpement' and 'master'
 |\ 
 | * 811c711 English errors correction (thanks vim spell :))
 | * dae1d7a Excpetion declaration to raise proper errors
 | * 9f1569f Cython allow to declare enum without given values. Values are taken from header. see: quvi.h
 * |   fa56bdd Merge branches 'developpement' and 'master'
 |\ \ 
 | |/ 
 | * e8e732b Change example in code doc comment
 | * 4e5db33 Removed "Queue" in thread example
 | * e0163a3 Better documentation
 | * adf5097 Back to a Quvi classes, that allows to use several Quvi instances
 | * f9f9944 Append additionnal information on setup
 * |   2c9e704 Merge branches 'developpement' and 'master'
 |\ \ 
 | |/ 
 | * f5e91bb change documentation
 | * 928d007 Mini changes on comments and doc
 * |   cac294e Merge branches 'developpement' and 'master'
 |\ \ 

 

Sympa ! Reste deux options, dont une qui peut s'avérer utile mais malheureusement pas très visible dans mon exemple, les option "--branches" et "--color". La première, comme je vous le disais, n'est pas visible ici, par contre, la couleur oui !:

2011-09-26-164747_650x582_scrot

Reste alors un petit souci... cette commande est un peu longue à taper. Qu'à cela ne tienne, ajoutons notre "alias" dans notre fichier ~/.gitconfig:


[alias]
    graph = log --color --graph --decorate --abbrev-commit --pretty=oneline --branches
 

Et de ce fait, les graphs sont directement utilisables de cette manière:


git graph
#ou
git graph --all
 

Notez que j'ai ajouté "--decorate" qui permet de voir les nom de branches, merges etc... en couleur.

Un dernier point, "git log" utilise le mode de lecture de log avec less, ce qui permet:

  • la recherche avec la commande "/"
  • enregistrer le log avec la commande "s" → la couleur est aussi enregistrée dans le fichier.

D'ailleurs, en parlant de cela, un module perl vous permet de resortir du code ansi en HTML, voici comment installer le module:


cpan i /HTML-FromANSI/
 

Reste alors à faire cette manipulation:


ansi2html <(git graph --all) > log.html
 

Surtout n'oubliez pas: aucun espace entre le "<" et "(git graph --all", cela à pour effet de créer un fichier "log.html".

Si vous ne voulez que le "corps" du fichier, pour l'injecter dans une page, utilisez la méthode ci-dessous:


xmllint --html --xpath "//body/*" <( ansi2html <(git graph --all) ) > log-body.html
 

Cela vous donnera ce résultat:

*   2a9910f (HEADtag: 0.0.1-alpha1origin/mastermaster) Merge branches 'developpement' and 'master'                      
|\                                                                                                                            
| * d50d7d9 (origin/developpementdeveloppement) Append those files to be integrated into pypi... and make some dist packages
| * 8d775cb This is an alpha release for now, not a beta Added Classifier section for pypi                                    
| b760954 Merge branches 'developpement' and 'master'                                                                       
|/                                                                                                                            
5120b24 What next section correction                                                                                        
e5fbc7c Merge branches 'master' and 'developpement' into developpement                                                      
413e236 Changes english errors (excuse my english, I'm french...)                                                           
*   a4d8baa Merge branches 'developpement' and 'master'                                                                       
|\                                                                                                                            
| * 811c711 English errors correction (thanks vim spell :))                                                                   
| * dae1d7a Excpetion declaration to raise proper errors                                                                      
| * 9f1569f Cython allow to declare enum without given values. Values are taken from header. see: quvi.h                      
|   fa56bdd Merge branches 'developpement' and 'master'                                                                     
|\ \                                                                                                                          
| |/                                                                                                                          
| * e8e732b Change example in code doc comment                                                                                
| * 4e5db33 Removed "Queue" in thread example                                                                                 
| * e0163a3 Better documentation                                                                                              
| * adf5097 Back to a Quvi classes, that allows to use several Quvi instances                                                 
| * f9f9944 Append additionnal information on setup                                                                           
|   2c9e704 Merge branches 'developpement' and 'master'                                                                     
|\ \                                                                                                                          
| |/                                                                                                                          
| * f5e91bb change documentation                                                                                              
| * 928d007 Mini changes on comments and doc                                                                                  
|   cac294e Merge branches 'developpement' and 'master'                                                                     
|\ \                                                                                                                          
| |/                                                                                                                          
| * 6758b76 Append every properties on getproperties method                                                                   
| * c37fd35 Change file structure, src directory to put sources, and change setup.py to map modification                      
| * ff68e10 Remove class, this is better to use it as a simple module                                                         
| * f5f7de9 Finnaly, I don't like this properties (in fact, I didn't found how to do...)                                      
| * f31783b Some test for Version and Sources properties on git                                                               
| * 971b344 Changes documentation comments                                                                                    
| 21c5b31 Merge branches 'developpement' and 'master'                                                                       
|/                                                                                                                            
1d4ae3b Add quvi to C linker                                                                                                
2ae25e0 the first code line was badly indented                                                                              
8aa4027 Change README to "md" file that allows a pretty display on github                                                   
28f0c02 The first README release                                                                                            
398424c append the setup.py file that compiles quvi.so, and install                                                         
b69371c first commit, inster pxd and pyx files                                                                              
Utilisez le code barre pour ouvrir le ticket dans votre mobile:
This ticket on you mobile
1 Samedi 14 Janvier 2012 21:35:51, malware removal

If you use your personal computer to get a quite a long time, cleanup for junk along with temporary data from your hard disk drive seriously isn't ample to help keep your personal computer quick and reliable. You need to examine which usually amount of your current HHD place is free, as well as afterwards put all your time and effort to really make it above 20 pct. When you've got uncover that completely free place can be a lesser amount of than 21 percentage even though operating Cleanup procedure, you ought to replicate the documents to the outer machines, particularly those data that is utilized by users not frequently, as well as afterwards erase it from the laptop or computer; almost never used programs should be erased as well. In the event that when possibly these kinds of steps don't cause significant release of freely available ram and also quicker personal computer functionality, storage up grade may be the best way out there. Prevention of malware assaults is an effective as well as time-saving laptop or computer efficiency fine-tuning strategy. Consequently set up titled anti-virus tool and ensure that it stays current. Also it is recommended so that you can schedule full personal computer study 2 times for every 1 week along with check out adware and spyware each and very external instrument before starting the item on your computer.

Ajouter un commentaire
Veuillez répondre à la question suivante : Indiquez en chiffre ce que vaut deux et deux

Trackbacks

Pour ajouter un trackback (retrolien) sur ce ticket, utilisez cette adresse: http://www.metal3d.org/index.php/trackback/default/tb?id=blog%2F284

Tags

Blog Copix Communication PC Config Fedora Vidéo Humour Autre Web Materiel Informatique PHP Développement Mootools HTML Linux WEB IE CSS Vista Microsoft Sympa XHTML Quizz Widget Klik CWE Voeux Bonne année Musique CCRMA Son Audio MAO Reconnaissance vocale Windows Mac Compiz MacOS Mysql Sun Base de données BD Screenlets Screenlet RPM compiz Ubuntu Live FireFox Derambarsh Facebook media informations Sécurité javascript SSH Commande Marketing concours ipod wii QT Trooltech Nokia Libre Logiciels GPL Attali Gnome Dock Compiler Bench undelete reiserfs recovery recover Thread Serveur Optimisation Server Apache Album RSS Flash Air XML Firefox Blender Opensource Orange Internet LiveBox Animaux Droits Logiciels Libres Google Loi RBS netcat Bash Téléphone Spam 3D NIDIA Standards Widgets Merise UML Streaming Developpement Perl MySQL Firewall Parfeu Bayes Novell Réseau Python LVS Salon FTP Dedibox Chrome Administration IRC Gentoo troll video Nouveauté Finance Etudiant spéctacle OpenOffice Javascript Java Info Eclpise ATI design mootools KDE Bureau Design GNU C Pages Jaunes Fun Bijoux Art mail Admin vmware fedora linux VirtualBox VMWare Qemu KVM vim Grep Fglrx Webkit GTK google web JQuery Coup de gueule coup de gueule Lois SVG Raycaster Canvas Hadopi Desktop Jeux Les Sims développement astuces Screen firefox Mobile Safaru Wine bash commande astuce Wave ooc C++ C# Netbook Hercules Bureautique Twitter Safari W3C chrome kazehakaze midori navigateur gecko webkit Links Liens Pyhon Nouvelles Metal Perso Conférence JDLL PCC Roadsend OOC News Acteur Cinéma Chanteur Seven windows orthographe pcc php jdll Slide Application mysql Html twitter python screen curses SVN Android Gphone iPhone OpenGL MindMap Projet Javascrtip Ajax Guitare Tab Tablature JSON firebug Chromium Iphone Titanium music sound android ogg ogv streaming Arkyne svn subversion gnome VLC Tv encoder ffmpeg Cryptage apple microsoft HTML5 Max Apple code youtube quvi git uzbl webgl chromium

  Catalogue professionnel de musique libre


  • twitter entries...
follow me on Twitter

Valid XHTML 1.0 Strict

tumblr visitor