• [^] # Re: Monotone

    Posté par (site web personnel) . En réponse à la dépêche bzr 0.11 vient de sortir. Évalué à 3.

    Si on ne connaît pas l'architecture de Git, c'est sûr que ce n'est pas facile à comprendre. J'aurais dû utiliser une formulation plus claire.

    Rapidement :

    Le coeur de Git, c'est de stocker des objets, et de les identifier par leurs somme de contrôle (SHA1 actuellement). Git ne gère que quatre types d'objets :

    - le blob, qui est un gros tas d'octets dans lequel Git ne met pas son nez ; concrètement, les différentes versions des fichiers mis en conf sont stockées sous forme de blob

    - l'arbre, qui contient des pointeurs vers des blobs et possiblement vers d'autres arbres ; c'est ce qui permet de mémoriser l'arborescence des fichiers

    - le commit, qui contient un pointeur vers un arbre (la racine des fichiers dont on souhaite mémoriser l'état) et vers un ou plusieurs autres commits (les ancêtres de ce commit, ce qui permet de constituer l'historique du développement, et de gérer les branches)

    - le tag, objet plus anodin qui pointe vers n'importe quel objet précédent, et porte un nom (genre v2.6.16.7) et optionnellement une signature.

    Donc, comme Mercurial (et Monotone ?), Git stocke l'état des fichiers aux divers moments du développement, et génère le diff entre deux états à la volée. Contrairement à Arch ou Darcs, par exemple, qui stockent les diff et génèrent l'état à la demande.

    Le reste de Git, c'est de la fioriture. ;-)

    - Programmes de bas niveau pour gérer ces objets
    - Programmes pour compacter tous ces objets en un pack qui consomme beaucoup moins d'espace disque et gérer ce genre de pack
    - Programmes pour envoyer et recevoir ces objets par divers protocoles
    - Programmes pour générer et digérer des patches de toutes sortes
    - Programmes pour interroger les données dans tous les sens (diff, grep très puissant, logs plus ou moins verbeux, etc.)
    - Programmes pour chercher à quel endroit on a introduit un bug
    - Programmes pour importer les données d'autres gestionnaires de conf
    - Programmes pour encore plein de trucs divers et variés plus ou moins annexes
    - Et bien sûr programmes de plus haut niveau pour pas se prendre la tête dans la vie de tous les jours ;-)

    Le tout étant à peu près correctement documenté. Git a fait beaucoup de progrès depuis ses débuts. :-)

    Doc pour débuter :

    Everyday Git
    http://www.kernel.org/pub/software/scm/git/docs/everyday.htm(...)

    Vue d'ensemble
    http://www.kernel.org/pub/software/scm/git/docs/