Git/Mercurial(hg)意见

ric*_*ard 25 git mercurial

首先,让我说我不是一个专业的程序员,而是一个需要它并且必须学习的工程师.我一直独自工作,所以只有我和我的七个分裂的人物...我们作为一个团队工作:)我的大部分东西都是用C/Fortran/Matlab完成的,到目前为止我一直在学习git to管理一切.然而,尽管我没有任何无法解决的问题,但我从来没有对它"满意"......对于我不能做的一切,我必须查阅一本书.而且,一段时间以来,我一直听到很多关于Mercurial的好东西.
现在,我的一位同事将不得不在一个项目上与我合作(我几乎为他感到难过)并且他开始学习Mercurial(他说更喜欢它),我正在考虑自己的转换.

我们几乎只在Windows平台上工作(尽管我使用Unix工具和来自这个地区的东西管理相对比较好).

所以,我想知道,在一个描述的场景中,我对切换有什么问题.我听说Mercurial对于Windows用户来说对用户界面更加友好.

它如何处理存储库?它是否以与git相同的方式创建它们(只是工作目录中的一个子目录)并且我可以只复制整个项目目录(包括git repo)并将它们带到某个地方而无需额外的思考?(当我选择git/svn时,我真的很喜欢).

你有什么好书可以推荐(比如Pro Git,只适用于Mercurial).

有什么好方法可以将Mercurial实现到Visual Studio/GVim for Windows或Windows资源管理器中以便我可以相对轻松地工作(我想避免使用命令行来处理有关它的所有内容,例如在git shell中).

还有其他我应该注意的事情(拜托,请不要指出其他问题......他们只是给我一些信息,而且我不确定我应该把它当作什么重要,什么可以忽视).我正在努力减少一些时间,因为我无法花时间重新学习Mercurial,就像我为git做的那样.

我也听说过git是c项目,而mercurial是python ......速度上有明显的差别.git非常快......在工作的时候我会遇到一些等待.

注意:我所有的项目都是中间尺寸......主要是数值模拟... 10-15000行(中等大小?)

jsi*_*ght 18

Git职业选手:

  • 超快(适用于非常大的项目)
  • 极其灵活
  • 适合Unix哲学的C工具

Git Cons:

  • 陡峭的学习曲线
  • 存在GUI工具,但(IMO)并不是那么可靠

HG优点:

  • 非常快(虽然不如GIT快) - 延迟不应该是15-20k线路项目的重大问题
  • 很好的GUI工具,甚至在Windows上(TortoiseHg很好而且非常成熟,还有其他工具)
  • 有文档记录,甚至Windows版本都有一个很好的GUI,带有变更集的图形视图
  • 比GIT(imo)稍微容易学习曲线

HG缺点:

  • 比git慢一点
  • 可能稍微不那么灵活

还有其他重大差异,但这些在我看来是最重要的.老实说,如果我主要在Windows上工作,我可能会选择Mercurial.


Mik*_*one 16

首先,让我说我不是一个专业的程序员,而是一个需要它并且必须学习的工程师.

也在这里工程师.我使用过Mercurial,Subversion,BitKeeper和CVS.尚未进入Git.

关于用户界面,我听说hg对Windows用户更友好.

不确定这里的意思,Git和Mercurial都是命令行工具.

它如何处理存储库?

它是一个分布式版本控制系统(DVCS),就像Git一样.

它是否以与git相同的方式创建它们(只是工作目录中的一个子目录)并且我可以只复制整个项目目录(包括git repo)并将它们带到某个地方而无需额外的思考?(当我选择git/svn时,我真的很喜欢).

是.Mercurial的存储库.hg位于工作目录的目录中.此外,Mercurial在其存储库中有一个命名系统,用于防止文件夹冲突(如果您将其与FAT,NTFS或HFS +等不区分大小写的文件系统一起使用).

你可以推荐哪些好书(比如Pro Git,只适用于Hg).

我推荐这个网站:https://www.mercurial-scm.org/guide

有什么好方法可以将hg实现到Visual Studio/GVim for Windows或Windows资源管理器中以便我可以相对轻松地工作(我希望避免使用命令行来处理有关它的所有内容,例如在git shell中).

有一个名为TortoiseHG的工具.我无法证明它有多好,因为我通常只是通过Cygwin使用命令行版本.

我也听说过git是c项目,而mercurial是python ......速度上有明显的差别.git非常快......在工作的时候我会遇到一些等待.

Mercurial非常快.我不知道它如何与Git叠加,但它比Subversion快得多.

注意:我所有的项目都是中间尺寸......主要是数值模拟... 10-15000行(中等大小?)

听起来像我的东西.当然,不包括原始数据.

关闭话题......

我的大部分内容都是用C/Fortran/Matlab完成的,到目前为止我一直在学习git来管理它.

我最近一直在从Matlab转向Python ......

  • 无需担心许可证和维护废话.
  • 这都是开源的.
  • NumPy,SciPy和MatPlotLib完成了我需要的大部分工作.
  • 我可以使用我的代码并轻松地将其与基于套接字的代码集成以与仪器进行通信.(我喜欢能够生成波形,将其下载到函数生成器,等待范围触发,获取其跟踪和统计信息,并将所有这些放入循环中.)
  • 我可以将它与PyGtk,PyQt,一个Web服务器,一个PDF生成器(ReportLib)集成,谁知道还有什么.
  • 我可以发送基于Python的代码而无需处理许可或版税.
  • 对于训练有素的软件开发而言,Python比Matlab更好.Matlab的每个文件一个功能和每个目录一个目录是疯狂的.
  • Python使用C和C++代码更容易扩展.那里的图书馆更好.

只是一个想法.

几年编辑:有一个名为SourceTree的Mac DVCS工具,我一直非常满意.它支持Git和Mercurial,可在App Store免费下载.


Luc*_*nes 9

就你的观点而言:

  • Mercurial对Windows用户来说更好 - 更容易安装,没有古怪的终端损坏:) - 基本上用更少的工作,恕我直言.
  • Git比Mercurial更快 - 基准测试显示了这一点.正如你所说的那样,因为Git是用C语写的.但是,老实说,我并不认为Mercurial 慢.
  • 如果您的朋友使用Mercurial,请使用Mercurial进行该项目.它们的基本界面和功能非常相似 - 我可以很容易地从Git中获取Hg.
  • 我可能错了,但我的看法是Git有一个更大的用户社区,可能是因为它被Linux内核使用了.
  • 感谢评论者:Git拥有Github - 有史以来最好的代码托管网站之一.(相信我!)
  • 许多备受瞩目的项目使用Git(内核,Rails,JQuery) - Github 存储库页面很有趣 - 我很惊讶我每天识别和使用的项目有多少使用Git!
  • Mercurial有一个非常非常好的教程,由Joel Spolsky在hginit.com上编写.这是我读过的最好的源代码控制教程!:)


小智 8

我想谈谈基准测试的主题.有一种说法我喜欢:"永远不要相信你没有伪造自己的基准":-)

是的,Git维基列出了告诉你Git更快的基准.如果它们来自其中一个竞争者,你应该用一粒盐和两粒谷物进行所有基准测试.例如,这些Git基准测试是在一个干净的Git存储库上进行的,但它们不包括使其干净所需的时间.

你看,Git有两种存储库格式:一种是提交提交速度非常快,但是空间效率极低,随着存储库大小的增加,其他操作变慢.这就是为什么他们添加了第二种存储库格式,可以清理未使用的文件并更有效地存储数据,从而减少占用空间并提高性能.这就是"git-gc"命令的作用("gc ==垃圾收集").

那么猜猜会发生什么?当Git基准测试报告快速提交时间时,即使用一种格式,并且当它们报告小占用空间或一些快速操作时,即使用第二种格式.两个基准测试都没有显示垃圾收集周期的成本.结果是Git看起来更快.

注意,我不是说Git很慢.但我确实认为Git网站上的基准高估了它的速度,特别是我不相信Git实际上比Mercurial更快.

Mercurial使用一种高效的格式,它提供的"提交时间"几乎与Git"胖"格式一样快,并且磁盘大小"几乎"与Git"slim"格式一样小,没有垃圾收集周期的成本之间.

当然,另一种永远不会信任基准的方式是,绩效有很多方面,人们倾向于报告符合他们先入为主的想法的方法.例如,我可以指出,当Google Code出现时,他们只支持Mercurial,而不支持Git,因为与Mercurial相比,Git的表现太差了.但是,我会忽略这一事实,这是一个特别是http的性能问题.


Tom*_*vic 6

我会逐点理解......

我认为Hg相对直观,易于使用,当失败时,记录良好.

Mercurial在Windows上有优势,但我相信Git在那里也有所改进,所以它可能不是一个好的差异化因素.

就用户界面而言,如果您不喜欢命令行,可以考虑使用TortoiseHg(您提到的Windows shell集成).在Windows上工作,我不怪你.:)

Mercurial以与Git相同的方式创建存储库:一个是根目录下的隐藏子目录.你可以随意移动它(把它放在棍子上,把它带到其他地方等等).为什么svn有问题?

我很高兴地说,考虑到Hg是完成工作的工具,我觉得没有必要找到一本"好书".可能有一些,但可用的在线文档对我想做的事情来说已经足够了.

虽然Git拥有它的速度,但目前还不清楚它是否比Mercurial更快,但重点是没有意义:无论如何它们真的非常快.

为了解释我自己关于这个主题的博客文章,我认为很重要的是Git似乎无法摆脱其难以合作的声誉.我碰到的几次引用说明了这一点比我想到的更好:"Git改变了,伙计!它不像过去那样,现在非常直观!你只需要了解它如何存储数据!"

总而言之,我是一个Mercurial用户(没有使用Git,但已经阅读了一下),我很少喜欢使用软件产品,因为95%以上的时间,它们是原始的,有粗糙的边缘,错误等.Mercurial是我喜欢使用的真正解决方案,并衷心推荐!


ale*_*rul 6

在阅读Mercurial中的分支指南后,我从Git到Mercurial的过渡变得更加容易,这也指Git的分支方式.

如果您有IIS 7,则可以轻松设置Mercurial服务器:在Windows Server 2008 R2上的IIS7下设置Mercurial服务器,您可以使用IIS 6或Apache2轻松找到教程.当然,快速同步hg serve是非常宝贵的:使用"hg serve"来推动变化

Visual Studio集成:

免费托管:

有关指南和教程,您可以从Mercurial wiki开始.


Jak*_*ski 5

我会推荐hgbook(Mercurial:The Definitive Guide)和hginit(Hg Init:a Mercurial tutorial.Joel Spolsky对Mercurial DVCS的友好介绍.)

另见我在Git和Mercurial中的答案- 比较和对比 SO问题.