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

Re: versioning system (VCS)



On Sat, 30 Apr 2011 17:50:08 +0200
"Jean-Yves F. Barbier" <12ukwn@gmail.com> wrote:
> 
> parce que je procède en tâtonnant, et que des fois il m'est arrivé de modifier
> un fichier et de m'apercevoir qu'une des versions précédentes était
> "meilleure" 

Il me semble que tu as trop d'a priori sur ta façon de faire (et surtout
sur la terminologie). Il est possible que GIT permette de satisfaire
exactement ce besoin là, mais de manière différente et avec une
terminologie différente. J'ai l'impression que tu pourrais voir ton
souhait exaucé simplement en faisant très souvent des branches ou des
tags (et tu peux créer sous GIT une branche en partant par exemple de
l'état d'il y a une semaine de ta branche courante, tu n'as donc pas
besoin de prévoir à l'avance ce que tu ferais) et en considérant que tu
fusionnes ("merge") "partiellement" des branches, ce que GIT sait faire
très bien (mais ce que je fais rarement, et donc que j'aurais du mal à
expliquer en détail)

>  
> > A mon avis, tu n'as pas assez expliqué ton besoin, et surtout le genre
> > de projet pour lequel tu veux un versionneur. Si on tente de deviner en
> > aveugle, on ne peut pas aider.
> 
> C'est un ERP écrit en python (parce que malheureusement, le port de wx dans
> wxLUA n'a pas intégré le côté virtuel des fonctions que j'utilise le plus,
> comme wxCtrlList)

Et en quoi ceci t'oblige à voir ton projet comme un jeu de fichiers
versionnés isolément, plutôt que comme une arborescence versionnée (et
branchée souvent)?

Je me sers (trop) rarement des branches de GIT, mais il me semble qu'on
peut facilement et à coût très faible en avoir vraiement plein (et les
fusionner ensemble avec finesse) et que ça devrait résoudre ton besoin.
Par contre, il ne faut plus penser en terme de versionneemnt de
fichiers isolés. Moi, j'aurais peur de me perdre avec beaucoup de
branches (et donc c'est à cause de ma petite tête que j'en limite le
nombre), mais si tu veux en avoir des milliers ou même plus GIT sait
faire.

Le point important, c'est que "branche" ou "version" signifie des
choses *très* différentes d'un versionneur à un autre, et il faut
comprendre un peu les concepts cléfs d'un versionneur avant de
l'utiliser.

Je n'arrive toujours pas à comprendre pourquoi tu imagines ton projet
devoir être versionné fichier par fichier indépendamment... Un projet
de développement logiciel, c'est toujours le versionnement d'une
arborescence toute entière  [avec peut-être une exception quand des
données sont dans autre chose qu'un fichier, par exemple dans une base
de données comme MySQL ou PostGresQL; mais même dans ce cas, on se
ramenerait à des fichiers en considérant qu'on versionne l'état dumpé
d'un SGBD. Bien sûr, ça passe moins à l'échelle, mais on versionne
rarement une base de données d'un tera octet, et quand on voit les
choses comme ça, c'est peut-être dans la base elle même qu'on stocke
les versions variées de ses "objets"].


Mon impression vague serait que tu devrais reconsidérer ton besoin en
l'exprimant autrement... Peut-être qu'en discutant dans un forum dédié
à GIT ta façon de faire tu aurais des réponses plus précises...

Je n'ai pas du tout compris pourquoi ton besoin "des fois il m'est
arrivé de modifier un fichier et de m'apercevoir qu'une des versions
précédentes était meilleure" implique de versionner les fichiers
isolément... Pourquoi ne vois tu pas ton besoin comme le souhait de
fusionner, intelligemment et partiellement, des branches différentes?
Es tu sûr de versionner des fichiers isolément (ça me semble une
hérésie digne de CVS ou RCS) et non pas de versionner une arborescence
entière ???

Moi j'ai l'impression que dans mes développements il m'arrive aussi de
tatonner et de m'apercevoir qu'une des versions précédentes d'un
fichier était meilleure, mais je regarde ça en terme d'arborescence (et
peut-être d'extraction ou de fusion partielle de quelques fichiers
isolés entre branches).

Bref, je ne comprends pas du tout cette idée de versionner des fichiers
individuellement. Pour moi, c'est hélàs ce que faisait RCS ou SCCS (et
même CVS) -ils ne savaient versionner que des fichiers, c'était un
défaut rédhibitoire- alors que tous les versionneurs actuels savent
(avec raison) versionner des arborescences entières!!!

Ma vague intuition est que ton point de vue est trop restrictif: le
versionnement [de sous-ensembles] d'arborescences entières de fichiers
est strictement plus puissant que le versionnement individuel de
fichiers. Il me semble que changer de point de vue (sans changer ta
façon de travailler) suffirait à te faire accepter un versionneur
récent. (Il faut juste comprendre que "version" et "branche" et parfois
même "arborescence" désignent des concepts différents de ce qu'on croit
parfois imaginer).

Par analogie, c'est un peu comme si tu ne voulais pas avoir des
répertoires, mais que tu tenais à travailler avec seulement des
fichiers (comme sur disquettes à l'époque des débuts de MS-DOS). Si tu
y tiens, tu peux travailler dans un seul répertoire et y retrouver un
feeling MS-DOSien. Mais ça ne signifie pas que les répertoires ne sont
pas utiles!

Par contre, tous les versionneurs pas trop anciens que je connais (GIT,
SVN, BZR, HG=Mercurial, ARCH, DARCS) permettent, d'une manière ou d'une
autre (chacun a sa façon) de récupérer l'état d'un fichier particulier
tel qu'il était il y a deux semaines; mais heureusement, ils versionnent
des arborescences entières, pas des fichiers! C'est vrai que des
antiquités comme RCS ne savaient versionner que des fichiers. C'est
pour ça qu'on les a oubliés, et à juste titre (si tu y tiens il existe
un paquet rcs sous debian).

En gros, j'ai l'impression que GIT ou même SVN satisfont à ton besoin,
mais que tu ne sais pas bien l'exprimer... Et que tu te focalises trop
sur les fichiers individuels (qui, j'insiste beaucoup, n'ont pas de
sens isolément; seule l'arborescence source de ton projet a du sens, et
doit être versionnée en tant que telle).

Par exemple, si tu transmettais le source de ton projet, tu
transmettrais nécessairement une sous-arborescence (par exemple comme
une archive dans un fichier tar), pas des fichiers un par un.... Un
fichier isolé n'a pas de sens dans un projet logiciel comme ton ERP en
Python (sauf si c'est un logiciel tellement petit qu'il tient dans un
seul fichier).

J'insiste, le versionnement de fichiers un à un n'a pas de sens, ou au
moins est rendu obsolète par les versionneurs (tous ceus que j'ai
mentionnés sauf RCS, SCCS, CVS) capables de versionner des
arborescences.

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: