lab 23 Fonctionnement interne de Git:
travailler directement avec les objets Git

Buts

Maintenant utilisons quelques outils pour analyser directement les objets git.

Trouver le dernier commit 01

Execute:

git hist --max-count=1

Cela devrait montrer le dernier commit fait dans le dépôt. Le hash SHA1 sur votre système est probablement différent de celui qui est chez nous, mais vous devriez voir quelque chose de ce type.

Output:

$ git hist --max-count=1
* 6f69f38 2014-02-21 | Ajout d'un Rakefile (HEAD, master) [Jim Weirich]

Extraire les infos du dernier commit 02

Utiliser le hash SHA1 depuis le commit listé ci-dessus …

Execute:

git cat-file -t <hash>
git cat-file -p <hash>

Voici notre sortie …

Output:

$ git cat-file -t 6f69f38
commit
$ git cat-file -p 6f69f38
tree 717551b224c3ee878b9760775a8aaa3aef63f633
parent c8d6b6136842306fdd51384fdbb63280b0e4e29f
author Jim Weirich <jim (at) edgecase.com> 1392937233 +0100
committer Jim Weirich <jim (at) edgecase.com> 1392937233 +0100

Ajout d'un Rakefile

NOTE: Si vous avez défini les alias ‘type’ et ‘dump’ aliases dans la partie sur les alias, alors vous pouvez taper git type et git dump plutôt que la ligne de commande plus longue cat-file (dont je ne me souviens jamais).

Ceci est le dump de l’objet commité qui est le head de la branche master. Il ressemble beaucoup à l’objet commit de la présentation précédente.

Trouver l’arbre 03

Nous pouvons faire un dump de l’arborescence du répertoire référencé dans le commit. Cela devrait être une description des fichier (du niveau supérieur) dans notre projet ( pour ce commit). Utiliser le hash SHA1 depuis la ligne de “l’arbre” listée ci-dessus.

Execute:

git cat-file -p <treehash>

Voilà à quoi ressemble mon arbre…

Output:

$ git cat-file -p 717551b
100644 blob 5a4654d5709532a1c888e9355f9320140f8b2315	Rakefile
040000 tree 6ece46011b24cc097d2359e98bad35d6cb588f62	lib

Super, je vois le Rakefile et le répertoire lib.

Faire un dump du répertoire lib 04

Execute:

git cat-file -p <libhash>

Output:

$ git cat-file -p 6ece460
100644 blob 9de476b0dcf56b029ff5eb0b7efc0cedab0bffbd	bonjour.rb

Il y a le fichier bonjour.rb.

Faire un dump du fichier bonjour.rb 05

Execute:

git cat-file -p <rbhash>

Output:

$ git cat-file -p 9de476b
# L'argument par défaut est Monde
# Auteur: Jim Weirich (jim@somewhere.com)
name = ARGV.first || "Monde"

puts "Bonjour, #{name}!"

Maintenant vous savez. Nous avons fait des dumps d’objets commit, d’objets arbre et d’objets blob directement depuis le dépôt git. C’est tout ce qu’il y a dedans, des blobs, des arbres et des commits.

Explorer par vous-même 06

Explorer le dépôt git manuellement par vous-même. Regarder si vous pouvez trouver le fichier original bonjour.rb du premier commit en suivant en manuel les références du hash SHA1 en partant du dernier commit.

Table des matières