Avis Git/Mercurial (hg)

tout d'abord, laissez-moi vous dire que je ne suis pas un programmeur professionnel, mais un ingénieur qui en avait besoin et qui devait apprendre. J'ai toujours été seul, donc, c'était juste moi et mes sept personnalités alternantes ... et nous avons travaillé bien comme une équipe :) la plupart de mes affaires sont faites en C/Fortran/Matlab et jusqu'à présent j'ai appris git pour gérer tout cela. Cependant, bien que je n'ai pas eu de problèmes insolubles avec elle, je n'ai jamais été "que" heureux avec elle ... pour tout je ne peux pas faire, je dois chercher un livre. Et, pour depuis quelque temps, J'ai entendu beaucoup de bonnes choses à propos de Mercurial.

Maintenant, un de mes collègues va devoir travailler avec moi sur un projet (je me sens presque désolé pour lui) et il a commencé à apprendre le Mercurial (il dit qu'il aime plus), et je considère le commutateur moi-même.

nous travaillons presque exclusivement sur la plate-forme Windows (bien que je gère relativement bien en utilisant des outils Unix et des choses qui viennent de cette partie du monde).

Donc, Je je me demandais, dans un scénario décrit, à quels problèmes je pouvais m'attendre avec l'interrupteur. J'ai entendu dire que Mercurial est un peu plus convivial envers les utilisateurs de windows, en ce qui concerne les interfaces utilisateur.

Comment gérer les référentiels ? Est-ce qu'il les crée de la même manière que git (juste un sous-répertoire dans un répertoire de travail) et puis-je simplement copier l'ensemble du répertoire de projet (y compris git repo) et les transporter quelque part sans réfléchir ? (J'ai vraiment aimé que quand je était de choisir plutôt que git / svn).

y a-t-il de bons livres que vous pouvez recommander (quelque chose comme Pro Git, seulement pour Mercurial).

quelles sont les bonnes façons d'implémenter Mercurial dans Visual Studio/GVim Pour Windows, ou dans Windows Explorer pour que je puisse travailler relativement facilement (je voudrais éviter d'utiliser la ligne de commande pour tout ce qui le concerne, comme dans Git shell).

y a - t-il autre chose que je devrais savoir (s'il Vous Plaît, sur cela ne m'amène pas à d'autres questions ... ils me donnent juste une tonne d'informations, et je ne suis pas sûr de ce que je devrais prendre comme important, et ce qu'il faut ignorer). J'essaie de gagner du temps, car je ne peux pas passer tout ce temps à réapprendre Mercurial, comme je l'ai fait pour git.

j'ai aussi entendu dire que git est un projet c, tandis que mercurial est python ... est-il une différence notable dans la vitesse. git était plutôt rapide ... vais-je rencontrer de l'attente en travaillant.

Avis: Tous mes projets sont de taille moyenne ... surtout des simulations numériques ... 10-15000 lignes (de taille moyenne?)

24
demandé sur Grant 2010-03-27 01:48:45

10 réponses

tout d'abord, laissez-moi dire que je ne suis pas un programmeur professionnel, mais un ingénieur qui en avait besoin et qui devait apprendre.

ingénieur ici aussi. J'ai utilisé Mercurial, Subversion, BitKeeper, et CVS. Je ne suis pas encore arrivé à Git.

j'ai entendu que hg est un peu plus convivial envers les utilisateurs de windows, en ce qui concerne les interfaces utilisateur.

Je ne sais pas ce qu'on voulait dire ici, Git et Mercurial sont des outils en ligne de commande à cœur.

Comment gérer les référentiels?

c'est un système de contrôle de version distribué (DVCS), tout comme Git.

est-ce qu'il les crée de la même manière que git (juste un sous-répertoire dans un répertoire de travail) et puis-je simplement copier l'ensemble du répertoire de projet (y compris git repo) et les transporter quelque part sans réfléchir ? (J'ai vraiment aimé quand je choisissais plutôt git / svn).

Oui. Le dépôt de Mercurial vit dans un répertoire .hg dans le répertoire de travail. En outre, Mercurial a un système de nommage dans son dépôt pour prévenir les collisions de noms de fichiers si vous l'utilisez avec un système de fichiers insensible à la casse comme FAT, NTFS, ou HFS+.

y a-t-il de bons livres que vous pouvez recommander (quelque chose comme Pro Git, seulement pour Hg).

je recommande le site web: https://www.mercurial-scm.org/guide

quelles sont les bonnes façons d'implémenter hg dans Visual Studio/GVim pour Windows, ou dans Windows Explorer pour que je puisse travailler relativement facilement (je voudrais éviter d'utiliser la ligne de commande pour tout ce qui le concerne, comme dans Git shell).

il y a un outil appelé TortoiseHG . Je ne peux pas atteste de sa qualité, puisque j'utilise généralement la version en ligne de commande via Cygwin.

j'ai aussi entendu dire que git est un projet c, tandis que mercurial est python ... est-il une différence notable dans la vitesse. git était plutôt rapide ... vais-je rencontrer de l'attente en travaillant.

Mercurial est assez rapide. Je ne sais pas comment ça fonctionne avec Git, mais c'est beaucoup plus rapide que Subversion.

Avis: Tous mes projets sont de taille moyenne ... surtout des simulations numériques ... 10-15000 lignes (de taille moyenne?)

ressemble à mes affaires. Sans compter les données brutes, bien sûr.

et hors sujet...

la plupart de mes affaires sont faites en C/Fortran/Matlab et jusqu'à présent j'ai appris git pour gérer tout cela.

Je suis passé de Matlab à Python récemment...

  • pas de problème de licence et de maintenance.
  • tout est open source.
  • NumPy, SciPy, et MatPlotLib font la plupart de ce dont j'ai besoin.
  • je peux prendre mon code et facilement l'intégrer avec le code basé sur socket pour parler à l'instrumentation. (J'aime pouvoir générer une forme d'onde, la télécharger dans un générateur de fonctions, attendre que le scope se déclenche, prenez sa trace et ses statistiques, et mettez tout ça dans une boucle.)
  • je peux l'intégrer avec PyGtk, PyQt, un serveur web, un générateur PDF (ReportLib), et qui sait quoi d'autre.
  • je peux envoyer mon code basé sur Python sans avoir à gérer les licences ou les droits d'auteur.
  • Python est bien meilleur pour le développement de logiciels disciplinés que Matlab. Les trucs d'une fonction par fichier et d'un répertoire par classe de Matlab sont insensés.
  • Python est plus facile à étendre avec du code C et C++. Les bibliothèques sont meilleures.

Juste une pensée.

des années plus tard éditer: Il ya un outil Mac DVCS appelé SourceTree dont j'ai été très heureux avec. Il prend en charge à la fois git et Mercurial, et est disponible gratuitement sur L'App Store.

16
répondu Mike DeSimone 2017-06-16 12:37:00

Git Pour:

  • Ultrafast (balance bien aux très grands projets)
  • extrême flexibilité
  • C outils qui cadrent bien avec la philosophie Unix

Git Contre:

  • courbe d'apprentissage Abrupte
  • GUI outils existent, mais (OMI) n'est pas du tout solide

HG Pros:

  • très rapide (mais pas aussi rapide que GIT) -- les retards ne devraient pas être un problème important sur un projet de 15-20K lignes
  • Nice outils d'interface graphique, même sur Windows (TortoiseHg est bon et très mature, et il y a les autres aussi)
  • bien documenté, et même la version windows a une interface graphique agréable avec une vue des changements
  • courbe d'apprentissage légèrement plus facile que GIT (imo)

HG Cons:

  • un peu plus lent que git
  • peut-être un peu moins flexible

il y a d'autres différences significatives, mais celles-ci sont les plus significatives à mon avis. Honnêtement, si je travaillais surtout sur Windows, J'irais probablement avec Mercurial.

18
répondu jsight 2010-03-26 23:06:44

En termes de vos points:

  • Mercurial est mieux pour les utilisateurs de Windows - facile à installer, rien de loufoque terminal de la corruption :) - en fait plus avec moins de travail, à mon humble avis.
  • Git est plus rapide que l'Mercurial - repères en sont la preuve. C'est, comme vous l'avez dit, parce que Git est écrit en C. Je ne trouve pas Mercurial que lent, cependant, pour être honnête.
  • Si votre ami utilise Mercurial, utilisez Mercurial pour ce projet. Ils sont très similaires dans leur interface de base et la fonctionnalité - je pourrais prendre Hg très facilement venant de Git.
  • je peux me tromper, mais ma perception est que Git a une plus grande communauté d'utilisateurs, probablement en raison de son utilisation par le noyau Linux.
  • Merci aux commentateurs: Git a GitHub - l'un des meilleurs sites d'hébergement de code jamais . (Faites-moi confiance!)
  • beaucoup de projets de haut niveau utilisent Git (le noyau, les Rails, JQuery) - Le Github la page des dépôts est intéressant - je suis étonné de combien de projets je reconnais et utilise quotidiennement Git!
  • Mercurial a un très, très bon tutoriel écrit par Joel Spolsky à hginit.com . C'est le meilleur tutoriel sur le contrôle source que j'ai jamais lu! :)
9
répondu Lucas Jones 2010-03-26 23:44:08

j'aimerais dire quelque chose au sujet des benchmarks. Il y a un dicton que j'aime bien: "ne fais jamais confiance à un benchmark que tu n'as pas fait toi-même": -)

Oui, le git wiki liste des benchmarks qui vous disent que git est plus rapide. Vous devez prendre tous les repères avec un grain de sel, et deux grains s'ils proviennent de l'un des prétendants. Par exemple, ces benchmarks Git sont pris sur un dépôt propre Git, mais ils n'incluent pas le temps nécessaire pour obtenir propre.

voyez-vous, Git a deux formats de dépôt: L'un est très rapide pour effectuer des propagations, mais il est extrêmement inefficace en termes d'espace, et au fur et à mesure que le dépôt prend de la taille, d'autres opérations deviennent plus lentes. C'est pourquoi ils ont ajouté un second format de dépôt qui nettoie les fichiers inutilisés et stocke les données plus efficacement, réduisant ainsi l'empreinte et améliorant les performances. C'est ce que fait la commande" git-gc "("gc == collecte des ordures").

donc devinez ce qui se passe? Quand un benchmark Git rapporte un temps de propagation rapide, c'est-à-dire avec un format, et quand ils rapportent une petite empreinte ou une opération rapide, c'est-à-dire avec le second format. Ni l'un ni l'autre de ces points de repère ne montre le coût du cycle de collecte des ordures. Le résultat est que Git est plus rapide.

Note, Je ne dis pas que Git est lent. Mais je pense que les points de référence sur le site Web de Git surestiment sa vitesse, et en particulier, Je ne suis pas sûr que Git est plus rapide que Mercurial.

Mercurial utilise un format efficace qui vous donne un temps de propagation "presque" aussi rapide que le format Git "fat", et une taille de disque "presque" aussi petit que le format git "slim", sans le coût du cycle de collecte des ordures entre les deux.

bien sûr, une autre façon de ne jamais faire confiance aux points de repère est qu'il y a de nombreux aspects au rendement et que les gens ont tendance à rapporter ceux qui correspondent à leurs idées préconçues. idée. Par exemple, je pourrais souligner que lorsque Google Code est sorti ils ont seulement pris en charge Mercurial et non Git parce que la performance de Git était trop pauvre par rapport à Mercurial. Mais alors, je serais omettre le fait que ce était spécifiquement un problème avec la performance sur http.

8
répondu DanielC 2011-06-08 21:32:23

point par point...

je considère que Hg est relativement intuitif, facile à utiliser et, en cas d'échec, bien documenté.

Mercurial avait un bord sur les fenêtres, mais je crois que Git s'est amélioré là aussi, donc ce n'est probablement pas un bon différenciateur.

en ce qui concerne les interfaces utilisateur, vous pourriez considérer TortoiseHg (l'intégration de l'interpréteur de commandes de Windows que vous avez mentionnée) comme utile si vous n'aimez pas la ligne de commande. Travailler aux fenêtres, Je ne te blâme pas. :)

Mercurial crée des dépôts de la même manière que Git: un sous-répertoire caché sous le répertoire racine. Vous pouvez le déplacer comme vous le souhaitez (à mettre sur un bâton, le prendre ailleurs etc. Pourquoi cela posait-il un problème avec svn?

je suis heureux de dire que, considérant Hg un outil pour faire un travail, je n'ai pas ressenti le besoin de trouver un"bon livre". Il pourrait y avoir certains, mais le Disponible en ligne docs étaient plus que suffisants pour ce que je voulais faire.

alors que Git se vante de sa vitesse, il est imprécis si elle est plus rapide que Mercurial, mais le point est sans objet: ils sont vraiment très rapide de toute façon.

pour paraphraser mon propre blog post sur le sujet, ce que je pense importe beaucoup est que Git ne semble pas secouer sa réputation d'être difficile à travailler avec. Une citation que j'ai rencontrée à plusieurs reprises illustre ceci: mieux que tout ce qui me vient à l'esprit: "Git a changé, mec! Ce n'est plus comme avant, c'est totalement intuitif maintenant! Tu dois juste apprendre comment ça stocke les données!"

pour conclure, je suis un utilisateur mercuriel (Je n'ai pas utilisé Git, mais je l'ai lu un peu) et il est rare que j'aime utiliser un produit logiciel parce que 95+% du temps, ils sont bruts, ont des bords rugueux, des bogues, etc. Mercurial est vraiment une solution que j'aime utiliser et que je recommande vivement!

6
répondu Tomislav Nakic-Alfirevic 2011-11-09 12:55:28

ma transition de Git à Mercurial a été beaucoup plus facile après avoir lu un Guide à la ramification dans Mercurial , qui se réfère également à la façon de brancher Git.

si vous avez IIS 7, vous pouvez facilement configurer un serveur Mercurial: configurer un serveur Mercurial sous IIS7 sur Windows Server 2008 R2 , et vous pouvez facilement trouver des tutoriels en utilisant IIS 6 ou Apache2. Bien sûr, pour une synchronisation rapide hg serve est inestimable: utilisant "HG serve" pour pousser les changements

intégration de Visual Studio:

hébergement Gratuit:

pour les guides et les tutoriels, vous pouvez commencer par le wiki Mercurial .

6
répondu alexandrul 2017-06-16 12:38:28

je vais vous recommander à hgbook (Mercurial: The Definitive Guide") et hginit (Hg Init: un Mercurial tutoriel. Une sympathique introduction à l'Mercurial DVCS par Joel Spolsky.)

Voir aussi ma réponse à Git et Mercurial - Comparer et de Contraste DONC, la question.

5
répondu Jakub Narębski 2017-05-23 12:09:10

si vous êtes heureux avec git, je doute qu'il ya une véritable raison impérieuse de changer bien que je aime Hg beaucoup. Git a TortoiseGit / Gitcheeetah, bien que je pense TortoiseHg est un peu mieux et stable IMHO.

vous pouvez regarder cette vidéo gratuite sur L'utilisation de Hg et TortoiseHg (ainsi que le plug-in Visual Studio Hg) sur tekpub/codeplex . La vidéo vous donnera une idée de Hg.

4
répondu Ryan 2010-03-26 22:54:35

je ne peux pas vraiment en parler Mercurial, bits, je peux confirmer git est écrit en C. de Prendre un coup d'oeil à la gitweb pour la source.

pour ce qui est d'avoir besoin de la ligne de commande pour tout ce qui concerne git, vous n'en avez pas nécessairement besoin. Il y a un outil appelé TortoiseGit qui s'intègre avec le shell explorateur et gérera vos dépôts git pour vous - si vous utilisez Eclipse il y a aussi EGit . Sur Linux, il y a QGit bien que le CLI soit beaucoup plus puissant.

je suis un développeur Linux/C et donc je préfère naturellement Git; j'ai aussi entendu de bonnes choses à propos de Mercurial cependant, je n'ai jamais pris la peine de l'apprendre.

1
répondu Vadim Kotov 2017-06-16 12:37:40

j'utilise git et mercurial alternativement depuis environ 3 ans maintenant. Je recommande fortement mercurial si vous avez besoin d'un système de contrôle source stable. Nous avions de sérieux problèmes de stabilité lorsque git était utilisé avec Atlassian Stash . Nous sommes donc passés à mercurial et avons utilisé SCM comme couche d'autorisation.

0
répondu Babu James 2016-06-09 05:12:04