[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: versioning system (VCS)



On Sat, 30 Apr 2011 20:59:37 +0200
"Jean-Yves F. Barbier" <12ukwn@gmail.com> wrote:

> On Sat, 30 Apr 2011 20:00:22 +0200, Aéris <aeris@imirhil.fr> wrote:
> 
> > Un SCM ne stocke que des diff, pas les fichiers complets.
> 
> Honhon, donc je suppose qu'il-y-a aussi des mécanismes de sécurité qui
> prennent le relais si, par exemple, je décide de virer les 100 premiers
> commits? (de façon à "reconstituer" la base-0 du diff)

Ça n'a aucun sens de virer des commits. un versionneur conserve par
définition même tout l'historique, puisqu'il permet au minimum de
revenir ou de comparer avec n'importe quelle version passée.

On ne peut donc pas supprimer des commits. On peut tout au plus
modifier certains (ou tous les) fichiers (gérés par le versionneurs)
pour qu'ils reviennent dans l'état où ils était il y a (par exemple) un
moins. Ensuite, on va par exemple commit-er ce nouvel état là. Mais le
versionneur a bien enregistré tous les états commit-és par définition
même.

J'insiste, on ne vire pas des commits: l'historique géré par un
versionneur est toujours "chronologiquement" croissante!  Tout au plus
on peut commit-er un état de l'arborescence qui se trouve être le même
(ou ressembler un peu à) l'état de cette arborescence il y a un mois ou
une année.

Mais le rôle d'un versionneur c'est évidemment d'être capable de
restituer l'état de l'arborescence à n'importe quelle date (ou point de
commit) dans le passé (ou dans une aitre branche, etc.). 

L'historique d'une arborescence versionnée est toujours croissante,
même si des fichiers sont revenus à leur état antérieur.

C'est un peu comme dans un registre d'état civil: même à ma mort, je
n'y serais pas effacé, on ajoutera juste la mention que je suis mort.

Et il me semble que la notion de sécurité n'a rien à voir avec le
versionnement (sauf évidemment quand il s'agit de versionner les
commits de users différents, avec toute la problèmatique des droits
d'accès, qui peuvent être indépendants de ceux du noyau Linux).

Donc je ne comprends pas cette remarque sur "des mécanismes de sécurité
qui prennent le relais si, par exemple, je décide de virer les 100
premiers commits?". Ca n'a pas grand chose à voir avec la sécurité
(sauf si on se place du point de vue d'un serveur de versionnement et
de l'authentification; celle de git me parait robuste). Et surtout, ça
n'a aucun sens de virer des commits: sauf dans les régimes staliniens,
on ne ré-écrit pas l'Histoire. Un versionneur enregistre l'histoire
d'une arborescence.

Un versionneur est au minimum un outil qui accepte des ordres de commit
concernant une arborescence source, en conserve l'historique, et qui
est capable de restaurer (ou de comparer) cette arborescence à l'état
qu'elle avait à n'importe quel commit dans le passé.

Mais parler de virer un commit n'a aucun sens. 

(git est assez compliqué et permet le 'git rebase -i' qui semble s'en
rapprocher. Mais je n'en conçois pas l'intérêt, et c'est violemment
documenté comme étant absoluement à éviter, au moins pour les débutants
dont je suis encore).

J'insiste, la terminologie employée à tort par Jean-Yves [comme "virer
un commit" qui me fait hurler] me fait penser qu'il y a des concepts
des versionneurs qui lui échappent.

Cordialement.
-- 
Basile STARYNKEVITCH         http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mine, sont seulement les miennes} ***


Reply to: