Bonjour à tous,
depuis bien des années, je fais de l'informatique et utilise des logiciels libres, mais mon boulot c'est de faire de l'admin système (et un peu de réseau), ça fait donc bien longtemps que je ne fais plus de prog (la fac...) mais passons...
En gros, j'aimerais savoir ce qu'il est mieux d'utiliser comme gestionnaire de versions, sachant que je suis un parfait newbie pour ce type de soft, je connais un peu (mais vraiment très peu) de CVS.
Sachant qu'il en existe énormément maintenant : CVS, Subversion, Bazaar, Bazaar-ng, Arch...
Mes contraintes, questions, besoins sont :
- logiciel libre bien évidemment
- facilité d'utilisation
- points positifs et négatifs des différents logiciels
- 'front-end' sympa (je pense par ex. à Trac pour Subversion)
- je ne sais pas quoi d'autre vu que je n'y connais pas grand-chose...
Pour l'instant, le truc c'est que je veux juste gérer un petit projet perso, mais mon idée c'est de pouvoir m'habituer à utiliser un gestionnaire de révisions pour un peu tout ce que je fais (scripts d'admin, fichiers de conf peut etre, etc.)
merci à tous.
# Subversion et Trac
Posté par Fireblade . Évalué à 5.
[^] # Re: Subversion et Trac
Posté par carlo . Évalué à 2.
Par contre, pour subversion, c'est comme CVS avec des commandes en ligne de commande, etc ? il existe des "frontend" pour linux afin de travailler directement sur ton dépot et pouvoir faire les commit etc. sans passer par un terminal ?
(sans parler de l'intégration dans un IDE genre Eclipse, Eric pour python, bluefish pour html, etc...)
[^] # Re: Subversion et Trac
Posté par PenPen . Évalué à 3.
Ensuite pour l'intégration à eclipse, tu as Subclipse (http://subclipse.tigris.org/).
[^] # Re: Subversion et Trac
Posté par carlo . Évalué à 1.
[^] # Re: Subversion et Trac
Posté par golum . Évalué à 2.
http://subversion.tigris.org/links.html
[^] # Re: Subversion et Trac
Posté par enzbang (site web personnel) . Évalué à 2.
psvn.el pour emacs
intégré dans GPS (pour la programmation en Ada)
etc...
[^] # Re: Subversion et Trac
Posté par Fireblade . Évalué à 3.
# Mercurial
Posté par Marc Poiroud (site web personnel) . Évalué à 4.
http://www.selenic.com/mercurial/wiki/
avec un tutoriel en français :)
http://www.selenic.com/mercurial/wiki/index.cgi/FrenchTutori(...)
Et en plus il est de base dans la future slackware ... bref que du bonheur ^_^
[^] # Re: Mercurial
Posté par TNorth . Évalué à 2.
Mercurial répond à mon avis clairement à tes attentes :
- libre
- facile d'utilisation: très peu de commandes à retenir
Points positifs: vitesse, légèreté, peu de dépendances, développement très rapide, mailing-list efficace et super état d'esprit.
Points négatifs: encore quelques trucs à améliorer (pull sur certaines révisions via le réseau, push en HTTP, etc.)
Il existe également un CGI pour mettre en ligne ton code, avec une interface à la gitweb.
Que du bonheur ;)
[^] # Re: Mercurial
Posté par Xavier Maillard . Évalué à 1.
CVS est vraiment trop loudingue et je fais plein de boulette surtout depuis que je suis passé a darcs. Darcs est tres bien mais il est lent, vraiment tres lent et du coup le plaisir de l'utiliser pour sa simplicité est largement remis en cause.
Je viens de tester tres rapidement et en surface mercurial et bzr, le point positif c'est que les commandes sont similaires a du CVS mais pour le cote BRANCHE, ca m'a l'air deja plus simple. Par contre, je ne sais pas si cela vient de moi ou quoi mais bzr m'a l'air super lent aussi en comparaison de mercurial (testé sur un meme repo avec un pauvre fichier).
Alors, mercurial ou bazaar-ng ? J'aimerais bien votre avis sur la question.
[^] # Re: Mercurial
Posté par ribwund . Évalué à 1.
Sinon on dit que la principale feature que mercurial a et que bzr n'a pas est le 'warm tea': si on lance une commande, le thé est encore chaud quand la commande est finie.
[^] # Re: Mercurial
Posté par Matthieu Moy (site web personnel) . Évalué à 2.
Ceci dit, aucun des deux ne sont vraiment « terminés », l'équipe de bzr ne s'est pas tellement concentrée sur les perfs pour l'instant, mais c'est plus une question d'implémentation qu'une question de modèle, donc, on peut s'attendre à des progrès importants dans les prochaines versions.
Par exemple, bzr n'a pas de serveur dédié. Gros avantage : on peut héberger une branch ou un repository bzr sur n'importe quel serveur, du moment qu'il y a du (s)ftp pour uploader et du HTTP statique pour downloader. L'inconvénient, c'est que du coup, le protocole n'est pas bien pipeliné, on n'exploite pas bien la bande passante. Le serveur dédié est sur la todolist de bzr.
Autre différence : bzr est 100% python. L'intérêt, c'est que ça s'installe plus facilement. Sur un bzr fraichement téléchargé, ./bzr va marcher direct, rien à compiler. Ça simplifie l'installation sur les machines n'ayant pas de compilo C (souvent le cas sous Windows). Bien sûr, on perds encore en perfs, mais évidemment, il y a des gens qui se penchent sur la question, et maintenant que les fonctionalités de bzr sont à peu près stabilisées, certains développeurs font du profiling et ont commencé à voir ce que ça donne de surcharger certaines méthodes python par une réimplémentation en C, et les gains en perfs sont immédiats.
Bref, aujourd'hui, hg est largement devant bzr niveau perfs, mais je ne vois pas de raisons pour que les deux ne deviennent pas à peu près équivalents d'ici quelques mois.
[^] # Re: Mercurial
Posté par ribwund . Évalué à 1.
Personnellement je comprends pas vraiment l'interet du "dumb server", la méthode que j'utilise c'est d'uploader des bundles (groupe de changesets) en general. D'ailleurs il y a un plugin (qu'il faudrait resurrecter) qui permet de creer ces bundles de facon efficace.
La différence la plus grande entre hg et bzr pour moi, c'est que hg a été crée pour la simplicité (à la fois du design et de l'interface utilisateur) et la performance (Matt Mackall est dev kernel, il veut que son outil soit utilisable pour lui meme) alors que le premier souci des devs bzr c'est l'usabilité (avec souvent la question "comment integrer dans launchpad). Au final je trouve le code de bzr plus complexe et avec beaucoup plus d'indirections alors que le design de hg peut etre expliqué en quelques minutes (le principe des revlogs).
[^] # Re: Mercurial
Posté par TNorth . Évalué à 1.
Raisons: vitesse principalement. Quand pour un pull il faut plusieurs minutes pour récupérer un projet, c'est très vite insupportable.
Niveau fonctionnalités, je pense que pour le moment ils sont proches, bzr ayant un petit avantage avec quelques nouveautés.
Il va y avoir une réunion entre développeurs Mercurial/Bazaar-NG prochainement, qui va permettre de rapprocher un peu les deux projets... peut être que quelque chose d'intéressant va en sortir !
Sinon, pourquoi hg ?
Encore une fois la vitesse: quand on développe, on a pas trop envie d'attendre une minute pour que le commit soit fait, puis encore 2 minute pour cloner le repo... du coup hg permet de travailler sans avoir une impression de "handicap" : le système de gestion de version aide plus qu'il n'énerve.
J'aime bien par ailleurs son système de "hooks" (actions à effectuer à certains moments) qui permet par exemple pour un projet Web PHP/MySQL de faire un dump de la structure des tables SQL avant le commit : (precommit = mysqldump etc.).
Encore un mot sur darcs: lent également (très variable peut être rapide sur certaines opérations et extrêmement lent sur d'autres), programmé en Haskell (dépendances ?) et un gros problème lors de tests sur son interface web: le temps de calcul pour faire un diff était tellement long qu'il y avait un "max execution time" à chaque fois... savoir que le serveur hébergeant cette interface pour darcs est un bi ou quadri proc 2Ghz...
Conclusion: pour apprécier un système de gestion de version, il faut principalement qu'il soit discret (et pas trop verbeux), simple et intuitif.
Pour ma part, j'ai abandonné Arch pour sa complexité, Darcs et bzr pour leur lenteur. Reste subversion sur lequel je ne peux me prononcer (segfault une fois, ça ne m'a pas mis en confiance et j'ai laissé tomber.)
[^] # Re: Mercurial
Posté par ribwund . Évalué à 1.
s/prochainement/le week end dernier/
[^] # Re: Mercurial
Posté par TNorth . Évalué à 1.
Ouie, ces pré-vacances dans le sud m'on fait un peu déconnecter ...
Merci de la rectification.
Par contre, pas encore vu de feedback de la rencontre !
[^] # Re: Mercurial
Posté par ribwund . Évalué à 1.
# Conseils
Posté par Matthieu Moy (site web personnel) . Évalué à 3.
- CVS (vieux, compliqué, pas puissant, ...)
- tla/baz : beaucoup trop compliqués par rapport à ce qu'ils font.
Parmis les stars du moment, il y a bzr (Bazaar-NG) et hg (Mercurial), qui sont tous deux très puissants, extensibles, mais quand même faciles d'utilisation (d'ailleurs, en passant : les équipes des deux sont en train de se rapprocher, il y a peu de chance que ça aboutisse à une fusion, mais il y aura sans doute des ponts entre les deux prochainement. Il y a déjà un plugin expérimental pour accéder à une archive hg depuis bzr).
Dans le genre simple et puissant, il y a Darcs. Le gros point noir de Darcs est qu'il ne passe pas très bien à l'échelle, donc il n'est pas tellement question de l'utiliser sur des très gros projets, et ça a peu de chance de changer.
[^] # Re: Conseils
Posté par carlo . Évalué à 1.
qu'apporte-t-il de plus par rapport à subversion par ex. ? que ce soit au niveau des fonctionnalités (je pense que c'est de ça que tu parles) ou au niveau des frontends...
(je regarde sur wikipedia fr en attendant... ah ! pas d'infos sur hg et bzr... tant pis !)
[^] # Re: Conseils
Posté par Matthieu Moy (site web personnel) . Évalué à 3.
Première chose, ils conservent l'historique des "merge", donc, quand tu veux récupérer les modifications de la branche X que tu n'as pas encore, tu fais "bzr|hg branch X" et c'est tout, il se démerde.
Deuxième chose, ce sont des gestionnaires de version décentralisés, ce qui veut dire que tu peux créer des branches d'un même projet sur des machines différentes. Quand tu bosses à plusieurs, chacun a sa branche, sur sa machine, et pas besoin de prise de tête avec un serveur centralisé à installer et à maintenir. Ça fait un peu peur au début, mais en fait, c'est à la fois plus flexible et plutôt plus simple comme façon de travailler.
Après, il y a le fait de pouvoir stoquer les informations sur l'historique dans un sous-répertoire du projet, qui n'est pas toujours un avantage, mais bien pratique la plupart du temps. Par exemple, avec bzr ou hg, pour commencer un projet, tu fais "bzr|hg init": une commande et c'est tout (bien sûr, quand tu veux publier tes changements, il faut en faire un peu plus pour mettre ça sur le web).
[^] # Re: Conseils
Posté par chl (site web personnel) . Évalué à 2.
Je suis au courant qu'il existe svk, mais je ne sais pas ce que le couple svn/svk vaut par rapport a des outils comme bzr ou hg qui ont été concu des le depart avec la notion distribuée.
[^] # Re: Conseils
Posté par golum . Évalué à 2.
SVK permet de répliquer un repository central en local. Ses branche sont mirrorées. Il permet ensuite de créer des branches sur la copie locale du repository qui ne sont pas mirrorées et des espaces de travail aussi bien sur un branche local qu'un branche partagée. Les commandes affectent tantôt le repository local et tantôt le local et le central. Cela permet donc d'effectuer un certain nombre d'opération sen local (commits successifs en mode déconnecté). Le problème que je vois est que toute la gestion est encore centralisée.
Ainsi 2 développeur ne peuvent pas synchroniser leurs repository locaux sans passer par le repository central.Il faudrait tester pour vérifier si les commandes de pull et push peuvent s'adresser à d'autres repository que celui central.
L'autre grosse différence que je vois avec les DVCS classiques se situe au niveau du commit sur une branche mirrorée.
Avec un DVCS classique, il n'y a pas de branche partagée. Chaque developpeur est maitre de sa branche locale et il ne peut pas y avoir de versions concurrente déjà commitée par un autre developpeur qui empecherait le commit. Un developpeur est responsable de la branche de référence et il est le seul à merger dessus pour integrer les modifs des autres après synchronisation et recupération des branches des autres en lecture.
Avec Svk le fait de commiter sur une branche répliquée envoie d'abord la modif sur le repository central puis resynchronise le repository local. Si une version concurrente a été commitée entretemps, il faut résoudre le conflit comme avec SVN.
Cette architecture est inhérente aux outils centralisés. Ainsi Clearcase dans sa version multisite adopte un schéma semblable.
Plusieurs serveurs hébergent un repository mirorré. Chaque serveur a l'exclusivité (masterchip) sur une branche.Et tous les espaces de travail du même site accèdent à la branche en concurrence d'accès comme un outil centralisé classique. Clearcase permet toutefois de transferer l'exclusivité sur une branche d'un site à un autre.
En tout état de cause, l'utilisation de tels outils est plus complexe que celles d'outils nativement distribués.
Pour ceux qui veulent approfondir SVK:
http://pickscrape.woobling.org/svk-visual-guide.pdf
http://svkbook.elixus.org/nightly/en/index.html
[^] # Re: Conseils
Posté par Matthieu Moy (site web personnel) . Évalué à 5.
Subversion est clairement meilleur sur la quantité et la qualité des front-ends. En fait, Subversion part avec le gros avantage qu'il est le successeur de CVS, qui avait quasiment le monopole il y a quelques années. Du coup, il y a une communauté d'utilisateurs, et de développeurs de « produits dérivés » énorme, que n'ont pas encore des projets jeunes comme hg et bzr (aucun des deux n'est encore en version 1.0 au passage). Mais il y a fort à parier que ça va se développer rapidement ! (il y a un projet Summer Of Code pour une GUI à bzr, et déjà des bouts d'interface graphique à gauche à droite)
Perso, je trouve qu'une GUI peut être pratique, mais qu'on apprend mieux avec la ligne de commande.
# Subversion
Posté par enzbang (site web personnel) . Évalué à 4.
Je l'utilise tous les jours pour mes projets de développement et pour gérer mon /home sur plusieurs ordinateurs.
Pour le développement j'utilise subversion avec des hooks côté serveur vérifiant :
- des règles de syntaxe et de style (logiciel style_checker)
- si le message de log est rempli et s'il contient un ticket Trac
Puis des hooks post-commit pour :
- envoi d'un mail aux développeurs
- Modification de l'historique du ticket dans Trac
- Lancement d'un test automatique avec buildbot.
Voir http://linuxfr.org/~DaOlivR/21622.html et http://olivier.ramonat.free.fr/svn_trac_buildbot/index_en.html pour des informations sur la mise en place de Subversion Trac et buidbot (pour l'automatisation des tests).
[^] # Re: Subversion
Posté par enzbang (site web personnel) . Évalué à 2.
Voir http://linuxfr.org/~DaOlivR/21622.html et http://olivier.ramonat.free.fr/svn_trac_buildbot/index_en.ht(...)
# Trac RO
Posté par Lol Zimmerli (site web personnel, Mastodon) . Évalué à 2.
La gelée de coings est une chose à ne pas avaler de travers.
# En résumé : Subversion pour faire simple ou Hg/Bzr pour faire puissant ?
Posté par carlo . Évalué à 3.
Et Mercurial ou Bazaar-ng sont des outils très très puissants, permettant de gérer des projets complexes avec beaucoup de monde, et surtout décentralisés ?
Je résume bien ?
Bon, du coup, je sais pas trop quoi utiliser, mais ça me donne un petit aperçu des potentialités de chacun, et me permet de faire déjà un tri, il ne m'en reste plus que 3 en lice ;-)
[^] # Re: En résumé : Subversion pour faire simple ou Hg/Bzr pour faire puissa
Posté par Milo . Évalué à 1.
exemple:
add: add the specified files on the next commit
annotate: show changeset information per file line
clone: make a copy of an existing repository
commit, ci: commit the specified files or all outstanding changes
diff: diff repository (or selected files)
export: dump the header and diffs for one or more changesets
init: create a new repository in the given directory
log, history: show revision history of entire repository or files
parents: show the parents of the working dir or revision
pull: pull changes from the specified source
push: push changes to the specified destination
remove, rm: remove the specified files on the next commit
revert: revert modified files or dirs back to their unmodified states
serve: export the repository via HTTP
status, st: show changed files in the working directory
update, up, checkout, co: update or merge working directory
[^] # Re: En résumé : Subversion pour faire simple ou Hg/Bzr pour faire puissa
Posté par Matthieu Moy (site web personnel) . Évalué à 2.
À l'inverse, j'utilise bzr sur un projet à 2 personnes, et c'est que du bonheur aussi. Pas de serveur à installer, on travaille chacun sur notre compte, sans avoir besoin de donner de droits à l'autre (avec subversion, la méthode typique quand on a la flème d'installer un serveur, c'est de donner un accès complet aux autres en mettant leur clé ssh dans ton ~/.ssh/autorized_keys, c'est un peu moyen quand même).
[^] # Re: En résumé : Subversion pour faire simple ou Hg/Bzr pour faire puissa
Posté par enzbang (site web personnel) . Évalué à 4.
Tout le monde n'a pas besoin d'utiliser le même compte ! C'est d'ailleurs fortement déconseillé car cela empêche de tracer correctement qui a fait quelles modifications.
[^] # Re: En résumé : Subversion pour faire simple ou Hg/Bzr pour faire puissa
Posté par golum . Évalué à 6.
Un outil type CVS/SVN est très bien adapté pour le développement en entreprise ou la centralisation simplifie l'administration (sauvegardes, gestion des privilèges, ...) et renforce la sécurité (dev closed source).
Pour un développement opensource dans lequels les contributeurs viennent de tous horizons et peuvent être occasionnels, le fait de donner un accès en ecriture sur le serveur central peut devenir handicapant.
Pour récupérer des contributions, il faut soit ouvrir l'accès en écriture au repository, soit récupérer un patch et l'appliquer.
Avec un DVCS (Distributed Version Control System) chacun possède une copie (partielle ou complète) du repository et se syncrhronise à l'envi avec les autres. Un contributeur occasionnel crée des versions dans son repository local.
Les developpeurs du projet n'ont plus qu'à récuperer la branche du contributeur en synchronisant leur repository avec celui du contributeur et peuvent utilisant les commandes de merge/comparaison/historiques de l'outil. Ils n'ont donc pas à sortir de l'outil ni à donner de privilèges pour integrer des contrib occassionnelles.
La contrepartie est que le modèle de developpement est dit user-centric. Au final une seule personne doit integrer ou approuver toutes les contributions des autres.
C'est ce modèle de developpement qui convient à Linus Torvald pour le dev de Linux.
Pour les outils centralisé le modèle est dit repopsitory-centric car plusieurs contributeurs déclarés peuvent travailler en concurrence sur la même branche et donc intégrer, tester valider sur la même version. C'est pour ca que ces outils proposent des mécanismes de concurrence d'accès de façon à ce que celui qui commite n'écrase pas le travail des autres. Le fameux commit/checkin qui peut échouer car il faut résoudre un conflit de merge (schéma de concurrence optimiste)
[^] # Re: En résumé : Subversion pour faire simple ou Hg/Bzr pour faire puissa
Posté par carlo . Évalué à 1.
merci pour ce commentaire.
bon, du coup je crois que je vais m'essayer à mercurial...
merci à tous
# Darcs
Posté par Nahuel . Évalué à 4.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.