Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

versioning system (VCS)

28 réponses
Avatar
Jean-Yves F. Barbier
Salut liste,

je ne connais ces syst=C3=A8mes que pour r=C3=A9cup=C3=A9rer une version, m=
ais
maintenant, pour un dev, j'ai besoin d'en utiliser un.

J'ai besoin de:
* Plusieurs branches (stable, unstable, dev),
* Pouvoir revenir (d=C3=A8s fois) de bcp de versions en arri=C3=A8re sur ce=
rtains
fichiers seulement,
* Et surtout que =C3=A7a ne soit pas une usine =C3=A0 gaz n=C3=A9cessitant =
la lecture de
200 pages de doc pour apprendre =C3=A0 se servir de chaque ordre possible=
(un
poil intuitif, =C3=A7a changerait:)

Donc vos exp=C3=A9riences sont le bienvenu.

JY
--=20
like:
When being alive at the same time is a wonderful coincidence.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20110430153922.72cc07a9@anubis.defcon1

10 réponses

1 2 3
Avatar
Jean-Yves F. Barbier
On Sat, 30 Apr 2011 17:57:47 +0200, Rémi Vanicat wrote:

...
git checkout permet de revenir à n'importe qu'elle version du fichie r:
$ git checkout commit -- file
récupère le fichier file dans la version ou il se trouvait à   l'époque du
commit "commit" (on parle de commit avec git plus que de révisions).



Ha, meilleur!
Pour être sur d'avoir bien compris:
$ git checkout a8445d2551ca45ef -- monfichieramoiquejeveuxdanscecommit
et ça roule?

En plus git possède des interfaces graphique comme gitk ou giggle qui
permette (entre autre) de ne regarder que les commits où un certain
fichier a évolué.



Je n'avais testé que gitk, je vais retester avec giggle

> Je tâtonne souvent et je crée des tas de versions différ entes d'un
> fichier; à la fin, soit le fichier final correspond à mes att entes, soit
> je pioche dans plusieurs pour obtenir le final - C'est toute cette cha îne
> que je souhaiterai pouvoir sauvegarder (mais encore une fois, je me tro mpe
> ptêt: cette partie du dev est peut-être uniquement du ressort personnel et
> pas du système de VCS?)

git permet certainement de faire ça. Dans ce genre de cas ma mé thode est
de faire 36 branches correspondants au différentes idée que j'a i pour
résoudre le problème, et je choisi celle qui me va à la fi n, mais c'est
certainement pas la seul façon de faire.



ben d'après ce que j'ai compris, si (enfin si je veux garder les trace s de
toutes les modifs d'un fichier jusqu'au commit final)

--
Thank God I've always avoided persecuting my enemies.
-- Adolf Hitler

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 30/04/2011 16:10, Bernard Schoenacker a écrit :
est il possible de savoir si les clients sont win32 ou uniquement
GNU ...



Git est un vrai bordel à installer «proprement» sous win.
Pour un DSCM à la fois Linux et Windows, j'aurais tendance à plutôt
partir sur du Mercurial, surtout si c'est pour le moment du dev en local
qui peut migrer sur du dev distant.

SVN est globalement à éviter.
Même s'il reste extrèmement utilisé (mais pour des raisons historiques
et non de performances), il montre les limites des «mauvais» choix
techniques utilisés (matérialisation des tags et des branches, faibles
performances sur les branch/merge, utilisation d'un serveur centralisé…).
Autre problème, le manque flagrant d'amélioration des fonctionnalités
(comme l'amélioration de la gestion des rename/move qui est extrèmement
problématique) depuis un long moment déjà.

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJNvDRoAAoJEK8zQvxDY4P9e7oH/A5qCBKqRjD0h3AGzXMnxoll
9ocmE8V4WwDLiohWahLm8no+Hr2UiYRJAH3m24g7Q3OIuQpQBOA1BApjR3ZOS2WR
aEmUXRy/S3U8bdPM9NAhzFQqgkTTxrS/0vH56SLgJBk2/bFJ2kzar0eBpBtChCNF
R7tNuQGHpkn6JCrh6b/bJBQ3w5mNdnh6gEyZ5P+emRua2csG8jX1SW3Ut3B18M2u
R86nCjR3mbnrt6linTsWoZd3pGb2CWI0segbpgadt+NEFMWnkmCY4Vb8bmV66llZ
VrnPXrtZb6a0YdpPnH3sZC6Q5Lxrp0L1YKBe72LHYlEPsCc6JM1JOpyLzkUIzb8 =rIUl
-----END PGP SIGNATURE-----

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/4dbc346e$0$4860$
Avatar
Guilhem Bonnefille
Le 30 avril 2011 18:12, Jean-Yves F. Barbier a écrit :
On Sat, 30 Apr 2011 17:57:47 +0200, Rémi Vanicat w rote:

...
git checkout permet de revenir à n'importe qu'elle version du fichier:
$ git checkout commit -- file
récupère le fichier file dans la version ou il se trouvait à l'é poque du
commit "commit" (on parle de commit avec git plus que de révisions).



Ha, meilleur!
Pour être sur d'avoir bien compris:
$ git checkout a8445d2551ca45ef -- monfichieramoiquejeveuxdanscecommit
et ça roule?

En plus git possède des interfaces graphique comme gitk ou giggle qui
permette (entre autre) de ne regarder que les commits où un certain
fichier a évolué.



Je n'avais testé que gitk, je vais retester avec giggle



Il y a aussi gitg (rapide) et beaucoup d'autres pour environnement KDE.
A noter le fameux tig : un navigateur Git en curses, c'est à dire une
interface graphique textuelle. Il est extrèmement rapide.

Concernant l'exploration de l'historique d'un seul fichier, beaucoup
d'outils reprennent les principes des outils de ligne de commande de
Git :
_ma_commande_git_ --- mon/fichier

Par exemple, tig fonctionne ainsi.

> Je tâtonne souvent et je crée des tas de versions différentes d' un
> fichier; à la fin, soit le fichier final correspond à mes attentes , soit
> je pioche dans plusieurs pour obtenir le final - C'est toute cette cha îne
> que je souhaiterai pouvoir sauvegarder (mais encore une fois, je me tr ompe
> ptêt: cette partie du dev est peut-être uniquement du ressort pers onnel et
> pas du système de VCS?)

git permet certainement de faire ça. Dans ce genre de cas ma méthode est
de faire 36 branches correspondants au différentes idée que j'ai pou r
résoudre le problème, et je choisi celle qui me va à la fin, mais c'est
certainement pas la seul façon de faire.



ben d'après ce que j'ai compris, si (enfin si je veux garder les traces de
toutes les modifs d'un fichier jusqu'au commit final)



En fait, il faut voir Git comme un outil de très bas niveau. Linus lui
même se défend d'avoir créer un VCS, plutôt un outils pour construi re
de VCS.

Ainsi, la très grosse difficulté de Git correspond à la question que
tu as posé à très juste titre : de quelle manière est-ce que je vai s
utiliser Git pour améliorer mon organisation. Pour cela,
malheureusement, il faut à la fois connaître Git et être clair sur to n
organisation actuelle. Ensuite, tu peux utiliser Git comme il faut.

Bref, tout ça pour dire qu'il faut certainement que tu te lances dans
l'aventure, pour essayer, découvrir. Et surtout, fait des sauvegardes
avant de lancer des commandes dont tu doute du résultat. Pour les
sauvegardes, tu peux faire des "git clone" pour copier tout
l'historique, ou simplement des "git archive" pour garder un
instantané de ton projet.


Enfin, sans remettre en doute la compétence des inscrits à cette
liste, si l'anglais ne te dérrange pas trop, je t'invite à aller sur
la liste de discussion de Git. Malgré son nom en "devel" c'est sur
cette liste que le support est apporté aux nouveaux.


Bon courage.
--
Guilhem BONNEFILLE
-=- JID: MSN:
-=- mailto:
-=- http://nathguil.free.fr/

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/BANLkTinwe00VbrQVqxnEGYc3=
Avatar
Basile Starynkevitch
On Sat, 30 Apr 2011 17:50:08 +0200
"Jean-Yves F. Barbier" 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 cro it
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 particul ier
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} ***

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 30/04/2011 18:20, Jean-Yves F. Barbier a écrit :
ben d'après ce que j'ai compris, si (enfin si je veux garder les traces de
toutes les modifs d'un fichier jusqu'au commit final)



Non, tu veux garder les traces de tous les commits d'un fichier jusqu'au
tag final =)
Tout SCM aura besoin que tu commites tes fichiers pour en suivre les
modifications. Il n'y a pas de sauvegarde en temps réel (sauf à être sur
du VMS :þ).

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJNvDn0AAoJEK8zQvxDY4P9YLEH/0n3KYWTBkpB8HUmFyyo6gpu
2NlkEyyZG8HWO8rlKUlwOWiqNzQ+1yvKLrM5Hk5VYCqZjKPmybCQoqK+ryRjqmZ0
AmxJP8nwz9PZL9Qt5YayZBQEXM/8VAlPkYEzWlKcxyjoWOdXkLJFXsGMmGdGL1sA
yZnl/sfK0mUWiC9MSUA0/S7b27+FnkZbH/s7whNxdD7BVRPEPm/ROIPCDVmUc7jC
qjnL7+teG/3/w9aTLy94MBsonpOAvL4INIdnahpytsP9h0d09hTpga2GVbvnC/qS
FTVodvZNHMZHjSun0cRVQFNvhBRPmCK1IzMIWVNPqLPFIqAHp51B1qoinP4WHhc =ksiu
-----END PGP SIGNATURE-----

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/4dbc39f4$0$25564$
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 30/04/2011 18:10, Jean-Yves F. Barbier a écrit :
Ce que tu dis est malheureusement ce que j'avais compris lors de différents
tests: tu est limité à toute l'arborescence, sans pouvoir descendre au niveau
fichier, à moins que de rétablir *toute* la branche antérieure voulue - ce qui
ne correspond pas à mes attentes (juste un fichier par-ci par-là.)



Le concept de branche est attaché à une arborescence mais tout système
de version digne de ce nom est capable de revenir sur un seul fichier à
n'importe quelle version antérieure de n'importe quelle branche (update
ou même directement export).

Après, j'ai du mal à imaginer un cas d'utilisation qui demanderait
d'utiliser cette fonctionnalité de manière massive et j'aurais tendance
à dire que cela relève plus du domaine des mauvaises pratiques de
développement que d'autre chose.

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJNvDlXAAoJEK8zQvxDY4P9YssH/2CdjtMGRUkmhdEtuLNrMzn/
oChGmPCxS896reea22H0GD7BYAb9hstJtgNJhNjH01W9HfiJWzyidl6fB3GXhwW4
USyW3n3NoOyaRrqPQYZBMaj3+qcqsXvEMWZGKGYJbgWwCPxmhwstqlEjOnAxSqA1
7TJGyS7DrobRZG5DJ5L4cUKFqqsjhe03pSeGl1YipWkjAg6/KrLF1XbocZN1PZAh
kGJwurE3loC6MxVW1t2LWkJ6ADimng0VIV28A7tZoURDcRQ/74NGdw3l3WFKU4qE
iHLdRm4QSL2dJcgUsZ9Rx5Qdgy9hK4u4dmHYfcg+H6ReGZy9SU5iG2P1M4NU2es =gqtC
-----END PGP SIGNATURE-----

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/4dbc395d$0$25564$
Avatar
Bernard Schoenacker
Le Sat, 30 Apr 2011 18:10:22 +0200,
Aéris a écrit :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 30/04/2011 16:10, Bernard Schoenacker a écrit :
> est il possible de savoir si les clients sont win32 ou
> uniquement GNU ...

Git est un vrai bordel à installer «proprement» sous win.
Pour un DSCM à la fois Linux et Windows, j'aurais tendance à plutôt
partir sur du Mercurial, surtout si c'est pour le moment du dev en
local qui peut migrer sur du dev distant.

SVN est globalement à éviter.
Même s'il reste extrêmement utilisé (mais pour des raisons historiques
et non de performances), il montre les limites des «mauvais» choix
techniques utilisés (matérialisation des tags et des branches, faibles
performances sur les branch/merge, utilisation d'un serveur
centralisé…). Autre problème, le manque flagrant d'amélioration des
fonctionnalités (comme l'amélioration de la gestion des rename/move
qui est extrêmement problématique) depuis un long moment déjà.

- --
Aeris



Bonjour,


j'ai demandé qui participait avec son système d'exploitation afin
de définir exactement le gestionnaire "CVS" ou équivalent et
pouvant rester le plus constant quelque soit l'utilisateur
connecté avec un client quelconque.

une fois l'ensemble des paramètres ainsi définis il ne reste
plus qu'à trouver le bon outil ....

reste à trouver le greffon pour gecko ou équivalent.

cqfd

slt
bernard


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Bernard Schoenacker
Le Sat, 30 Apr 2011 18:33:56 +0200,
Aéris a écrit :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 30/04/2011 18:20, Jean-Yves F. Barbier a écrit :
> ben d'après ce que j'ai compris, si (enfin si je veux garder les
> traces de toutes les modifs d'un fichier jusqu'au commit final)

Non, tu veux garder les traces de tous les commits d'un fichier
jusqu'au tag final =)
Tout SCM aura besoin que tu commites tes fichiers pour en suivre les
modifications. Il n'y a pas de sauvegarde en temps réel (sauf à être
sur du VMS :þ).

- --
Aeris



bonjour,

es tu sûr de ne pas parler de la versio nlibre de VMS ?

lien :

http://fr.wikipedia.org/wiki/OpenVMS

reste à trouver la branche pour GNU ...

solution :

http://www.wherry.com/gadgets/retrocomputing/vax-simh.html

slt
bernard

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Basile Starynkevitch
On Sat, 30 Apr 2011 18:33:56 +0200
Aéris wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 30/04/2011 18:20, Jean-Yves F. Barbier a écrit :
> ben d'après ce que j'ai compris, si (enfin si je veux garder les trac es de
> toutes les modifs d'un fichier jusqu'au commit final)



Je confirme. Et d'ailleurs, c'est une règle de base dans les gros
projets collaboratifs (comme GCC). On commit des *petites*
modifications, souvent de quelques lignes ou douzaines de lignes.
Par exemple, sur GCC (versionné avec SVN), il y a 173221 commits depuis
son origine (dans les années 1985?). Et les 5 derniers (obtenus par
svn log --limit 5) sont!

0
------------------------------------------------------------------------
r173221 | burnus | 2011-04-30 18:33:47 +0200 (Sat, 30 Apr 2011) | 8 lines

2011-04-30 Tobias Burnus

PR fortran/48821
* gfortran.dg/import9.f90: New, proper test.
* gfortran.dg/interface_37.f90: Remove bogus
test (bogus copy of interface_36.f90).


------------------------------------------------------------------------
r173220 | dougkwan | 2011-04-30 18:26:23 +0200 (Sat, 30 Apr 2011) | 6 lines

2011-04-30 Doug Kwan

* include/Makefile.am (install-freestanding-headers): Also install
cxxabi_tweaks.h.
* include/Makefile.in: Regenerate.

------------------------------------------------------------------------
r173219 | burnus | 2011-04-30 17:54:49 +0200 (Sat, 30 Apr 2011) | 12 lines

2011-04-30 Tobias Burnus

PR fortran/48800
* decl.c (gfc_match_import): Don't try to find the
symbol if already found.

2011-04-30 Tobias Burnus

PR fortran/48800
* gfortran.dg/interface_37.f90: New.


------------------------------------------------------------------------
r173217 | dnovillo | 2011-04-30 17:20:58 +0200 (Sat, 30 Apr 2011) | 31 lines

cp/ChangeLog
2011-04-29 Le-Chun Wu

* cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
* call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
(build_over_call): Use it to determine whether to emit a NULL
warning for template function instantiations.
(build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
EXPLICIT_TARGS is set.

2011-04-29 Diego Novillo
Le-Chun Wu

* call.c (conversion_null_warnings): Also handle assignments
when warning about NULL conversions.

testsuite/ChangeLog
2011-04-29 Le-Chun Wu

* g++.dg/warn/Wnull-conversion-1.C: New.
* g++.dg/warn/Wnull-conversion-2.C: New.

2011-04-29 Le-Chun Wu

* g++.dg/warn/Wconversion-null-2.C: Do not expect a NULL
warning in implicitly instantiated templates.

2011-04-29 Diego Novillo

* g++.old-deja/g++.other/null3.C: Expect warning about converting
boolean to a pointer.
------------------------------------------------------------------------
r173216 | hubicka | 2011-04-30 16:08:03 +0200 (Sat, 30 Apr 2011) | 5 lines

* ipa-inline.c (can_inline_edge_p): Disregard limits when
inlining into function with flatten attribute.
(want_inline_small_function_p): Be more realistic about inlining
cold calls where callee size grows.

Le dernier commit de cette liste (r173216) est le patch ci-dessous
(je ne donne pas le patch du ChangeLog, il est ci dessu).

Index: gcc/ipa-inline.c
========================= ========================= =================
--- gcc/ipa-inline.c (revision 173215)
+++ gcc/ipa-inline.c (revision 173216)
@@ -272,9 +272,11 @@
FIXME: this is obviously wrong for LTO where STRUCT_FUNCTION is missi ng.
Move the flag into cgraph node or mirror it in the inline summary. */
else if (DECL_STRUCT_FUNCTION (e->callee->decl)
- && DECL_STRUCT_FUNCTION (e->callee->decl)->can_throw_non_call_exceptio ns
+ && DECL_STRUCT_FUNCTION
+ (e->callee->decl)->can_throw_non_call_exceptions
&& !(DECL_STRUCT_FUNCTION (e->caller->decl)
- && DECL_STRUCT_FUNCTION (e->caller->decl)->can_throw_non_call_exc eptions))
+ && DECL_STRUCT_FUNCTION
+ (e->caller->decl)->can_throw_non_call_exceptions))
{
e->inline_failed = CIF_NON_CALL_EXCEPTIONS;
inlinable = false;
@@ -288,6 +290,11 @@
}
/* Check if caller growth allows the inlining. */
else if (!DECL_DISREGARD_INLINE_LIMITS (e->callee->decl)
+ && !lookup_attribute ("flatten",
+ DECL_ATTRIBUTES
+ (e->caller->global.inlined_to
+ ? e->caller->global.inlined_to->decl
+ : e->caller->decl))
&& !caller_growth_limits (e))
inlinable = false;
/* Don't inline a function with a higher optimization level than the
@@ -468,8 +475,39 @@
e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT;
want_inline = false;
}
+ /* If call is cold, do not inline when function body would grow.
+ Still inline when the overall unit size will shrink because the offline
+ copy of function being eliminated.
+
+ This is slightly wrong on aggressive side: it is entirely possible
+ that function is called many times with a context where inlining
+ reduces code size and few times with a context where inlining increase
+ code size. Resoluting growth estimate will be negative even if it
+ would make more sense to keep offline copy and do not inline into the
+ call sites that makes the code size grow.
+
+ When badness orders the calls in a way that code reducing calls come
+ first, this situation is not a problem at all: after inlining all
+ "good" calls, we will realize that keeping the function around is
+ better. */
else if (!cgraph_maybe_hot_edge_p (e)
- && estimate_growth (e->callee) > 0)
+ && (DECL_EXTERNAL (e->callee->decl)
+
+ /* Unlike for functions called once, we play unsafe with
+ COMDATs. We can allow that since we know functions
+ in consideration are small (and thus risk is small) and
+ moreover grow estimates already accounts that COMDAT
+ functions may or may not disappear when eliminated from
+ current unit. With good probability making aggressive
+ choice in all units is going to make overall program
+ smaller.
+
+ Consequently we ask cgraph_can_remove_if_no_direct_calls_p
+ instead of
+ cgraph_will_be_removed_from_program_if_no_direct_calls */
+
+ || !cgraph_can_remove_if_no_direct_calls_p (e->callee)
+ || estimate_growth (e->callee) > 0))
{
e->inline_failed = CIF_UNLIKELY_CALL;
want_inline = false;


Comme tu peux le voir, les développeurs de gcc commettent des petits
patchs le plus souvent (quelques dizaines de lignes modifiées par commit) .
Il peut arriver que la description du commit (c'est à dire l'entrée dan s
un ChangeLog) soit presque aussi grosse que le changement commis.
C'est aussi dû à la règle sociale de GCC: on ne peut y commettre que du
code qui a été revu et approuvé par autrui.


Et même sur un développement où je suis tout seul, je commite plusieu rs
fois par jour. Le temps entre deux commit, c'est le temps élémentaire
qu'on accepte de perdre. On a donc intérêt à ce qu'il ne soit pas trop
long.

C'est aussi un avantage de GIT sur SVN: il sait faire des branches
facilement et il sait commiter rapidement.

En gros, je commite souvent après correction d'un seul bogue ou ajout
d'une seule fonction ou méthode (notamment quand elle est publique), ou
ajout de quelques douzaines de lignes au maximum. Je commite toujours
avant de partir (manger, ou chez moi). Si je travaille toute la
journée, je vais svn commettre deux fois par jour au moins (sauf
peut-être quand je chasse un bogue insidieux qui me prend plusieurs
jours).

Bien sûr, faire cent commit-s dans une journée serait quand même
excessif. Un truc très important, c'est d'avoir un message clair
associé à son commit (ce n'est pas facile). Dans un développmeent
communautaire, c'est indispensable et fortement codifié (chaque entrée
d'un ChangeLog de GCC correspond à un commit). Quand je bosse tout
seul, j'ai à tort la faiblesse de mettre des messages de commit trop
courts, et je le regrette plus tard.

Il faut aussi savoir que Emacs a des modes pour faciliter le travail
dans un versionneur.

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} ***

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Jean-Yves F. Barbier
On Sat, 30 Apr 2011 19:25:50 +0200, Basile Starynkevitch
wrote:

Je confirme. Et d'ailleurs, c'est une règle de base dans les gros
projets collaboratifs (comme GCC). On commit des *petites*
modifications, souvent de quelques lignes ou douzaines de lignes.
Par exemple, sur GCC (versionné avec SVN), il y a 173221 commits dep uis
son origine (dans les années 1985?). Et les 5 derniers (obtenus par
svn log --limit 5) sont!



Effectivement, ça fait bcp!

Comme tu peux le voir, les développeurs de gcc commettent des petits
patchs le plus souvent (quelques dizaines de lignes modifiées par co mmit).
Il peut arriver que la description du commit (c'est à dire l'entrà ©e dans
un ChangeLog) soit presque aussi grosse que le changement commis.
C'est aussi dû à la règle sociale de GCC: on ne peut y com mettre que du
code qui a été revu et approuvé par autrui.


Et même sur un développement où je suis tout seul, je comm ite plusieurs
fois par jour. Le temps entre deux commit, c'est le temps éléme ntaire
qu'on accepte de perdre. On a donc intérêt à ce qu'il ne s oit pas trop
long.



Wai, ça revient à ce que tu disais: tu commites toute l'arboresce nce et pas un
seul fichier; je suppose qu'il-y-a des mécanismes d'économie de p lace
(symlinks?) pour ne pas que le projet grandisse sur le HD à une vitesse
exponentielle?

C'est aussi un avantage de GIT sur SVN: il sait faire des branches
facilement et il sait commiter rapidement.

En gros, je commite souvent après correction d'un seul bogue ou ajout
d'une seule fonction ou méthode (notamment quand elle est publique), ou
ajout de quelques douzaines de lignes au maximum. Je commite toujours
avant de partir (manger, ou chez moi). Si je travaille toute la
journée, je vais svn commettre deux fois par jour au moins (sauf
peut-être quand je chasse un bogue insidieux qui me prend plusieurs
jours).



Et... ça ne fini pas par rendre sourd de commiter trop souvent? ;-)

Bien sûr, faire cent commit-s dans une journée serait quand m ême
excessif. Un truc très important, c'est d'avoir un message clair
associé à son commit (ce n'est pas facile). Dans un dévelo ppmeent
communautaire, c'est indispensable et fortement codifié (chaque entr ée
d'un ChangeLog de GCC correspond à un commit). Quand je bosse tout
seul, j'ai à tort la faiblesse de mettre des messages de commit trop
courts, et je le regrette plus tard.



C'est là que j'ai coincé parce que je ne savais pas comment faire un
retrieve d'un ou qq fichiers des commits précédents: à chaqu e fois je me
retrouvais avec une version complète (et donc mes modifs récentes virées)

--
Colorado:
Where they don't buy M & M's, 'cause they're so hard to peel.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
1 2 3