Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial实践:与IDE和可伸缩性一起使用_Ide_Mercurial_Scalability - Fatal编程技术网

Mercurial实践:与IDE和可伸缩性一起使用

Mercurial实践:与IDE和可伸缩性一起使用,ide,mercurial,scalability,Ide,Mercurial,Scalability,当然,我不是SCM工具的实验用户,尽管我相信它们的有用性。 我在以前的工作中使用了一些模糊的商业工具,在现在的工作中使用了Perforce,在我的个人小项目中使用了一点TortoiseSVN,但我不喜欢到处都有很多.svn文件夹,这使得搜索、备份等变得更加困难。 然后我发现了分布式SCM的兴趣,我选择了显然比git更简单的Mercurial方式,仍然是为了我个人的需要。我在学习正确使用它的过程中,已经阅读了部分wiki并处于优秀PDF书籍的中间。 我经常看到这样的重复,例如,“不要犹豫,在本地使

当然,我不是SCM工具的实验用户,尽管我相信它们的有用性。 我在以前的工作中使用了一些模糊的商业工具,在现在的工作中使用了Perforce,在我的个人小项目中使用了一点TortoiseSVN,但我不喜欢到处都有很多.svn文件夹,这使得搜索、备份等变得更加困难。 然后我发现了分布式SCM的兴趣,我选择了显然比git更简单的Mercurial方式,仍然是为了我个人的需要。我在学习正确使用它的过程中,已经阅读了部分wiki并处于优秀PDF书籍的中间。

我经常看到这样的重复,例如,“不要犹豫,在本地使用多棵树。Mercurial使这变得快速和轻量级。”以及“对于您使用的每个功能,创建一棵新树。”。 这些都是有趣而明智的建议,但它们有点伤害了我在集中式SCM方面的小习惯,在集中式SCM中,我们有一个“神圣”的中央存储库,在这里,分支是经过仔细规划(并由管理员处理)的,变更列表必须由(高级)同行检查,并且不得破坏构建,等等:-)开始在一个新的分支上工作需要相当长的时间

鉴于上述情况,我有两个问题:

  • 在IDE等环境中进行大量克隆有多实际?如果项目有配置/设置文件、makefiles或Ant脚本、shell脚本或其他需要更新路径的文件,该怎么办?(是的,可能是个坏主意……)例如,在Eclipse中,如果我想编译和运行克隆,我必须再做一个项目,调整Java构建路径、运行/调试目标,等等。除非Eclipse插件可以简化这项任务。我会错过这里的设施吗

  • 这个比例是多少?我读过Hg适合大型代码库,但我感到困惑。在我的工作中,我们有一个大约200万行的Java应用程序(好吧,几个围绕一个大的通用内核),仅代码就有110MB的权重。在我的旧(2004)Windows工作站上进行干净编译需要大约15分钟才能生成50MB的类文件!我没有看到自己克隆整个项目来更改3个文件。那么这里的做法是什么呢

我还没有在我的阅读材料中看到这些问题,所以我希望这将成为一条有用的线索。

问题1:

具有相当好的Mercurial集成。我们还使用Mercurial进行开发。就我个人而言,我有大约15个并行的项目克隆,IDE处理得很好。我们没有调整构建脚本的麻烦,我们可以“克隆并运行”

这很容易,在许多情况下,我会克隆到bug编号,如:

hg clone http://pida.co.uk/hg pida-345 hg克隆http://pida.co.uk/hg pida-345 对于bug#345,我已准备好修复


如果你必须根据应用程序的实际签出目录来修改脚本,我可能会认为你的构建脚本应该使用某种项目相对路径,而不是硬编码路径。

< P> PhiLo:我是新的,但是水星也有“内部分支”。可以在单个存储库中使用,而不是克隆它

而不是

hg clone toto toto-bug-434
你能行

cd toto
hg branch bug-434
hg update bug-434
...
hg commit
hg update default
创建分支并来回切换。切换分支时,不受版本控制的构建文件不会消失,其中一些文件会随着底层源代码的修改而过时。您的IDE将重建所需的内容,不再需要更多。它的工作原理很像CVS或subversion

除了“工作”存储库之外,您还应该拥有干净的“传入”和“传出”存储库。只是你的“工作”可以有多种用途


也就是说,在尝试任何复杂的操作之前,您应该克隆您的工作回购。如果出现任何问题,您可以扔掉克隆并重新开始。

您提出了一些好的观点

  • 在IDE等环境中进行大量克隆有多实际
您是对的,当IDE和其他工具依赖于绝对路径时,很难管理许多克隆。部分问题可以通过在配置文件中始终使用相对路径来解决——确保源代码签出可以从任何位置编译本身就是一个很好的目标,无论您使用什么版本控制系统:-)

但是当你不能或不想为几个克隆人操心时,请注意这一点。“hgbook”强调了许多克隆,因为这是一种概念简单且非常安全的工作方式。当您获得更多的经验时,您会发现您可以在一个存储库中使用多个磁头(可能通过使用命名它们)来执行相同的操作

  • 这个比例是多少

克隆110 MB存储库应该相当快:这取决于将110 MB写入磁盘所需的时间。在一项研究中,有报道称克隆6.3 GB需要4分钟——将其缩小到110 MB需要4秒钟。这应该足够快,你的茶仍然是热的:-)部分诀窍是历史数据只是硬链接的(是的,也在Windows上),因此只需在工作副本中写出文件即可。

谢谢你有趣的评论,我已经访问了该网站,似乎,我应该尝试一下。现在,我的问题是一般性的:这个方案与现有项目/IDE的集成程度如何?当然,我同意需要相对路径,但某些IDE可能不符合要求。问题是您无法删除此类分支。您可以使用mq Extension and strip命令删除分支,该命令可删除修订版和所有后续修订版。如果你不再对这家分店感兴趣,那就太好了,它会导致一个天生的老板。