我当然不是SCM工具的试验用户,尽管我确信它们的用处。
我在以前的工作中使用了一些晦涩的商业工具,在当前的工作中使用了Perforce,并为我的小个人项目使用了TortoiseSVN,但是我不喜欢到处都有很多.svn文件夹,进行搜索,备份等等。难的。
然后我发现了分布式SCM的兴趣,我选择了看似更简单(比git)的Mercurial方式,但仍然满足我的个人和个人需求。我正在学习正确使用它的过程,已经阅读了部分Wiki,并且正坐在一本优秀的PDF书中间。

我经常在Mercurial working practices中看到“重复使用”,“不要犹豫在本地使用多棵树。Mercurial使此操作快速而轻巧”。和“为您使用的每个功能创建一个新树。”。
这些都是有趣且明智的建议,但是对于集中式SCM来说,它们使我的一些小习惯变得有些不适。在这里,我们拥有一个“神圣的”中央存储库,在该存储库中,分支机构经过精心计划(并由管理员处理),变更列表必须由(高级)同行和不得破坏构建等。:-)开始在新分支上工作需要花费一些时间...

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

  • 在IDE等环境中进行大量克隆是多么实用?如果项目具有配置/设置文件,makefile,Ant脚本或Shell脚本或其他需要路径更新的怎么办? (是的,可能是个坏主意……)例如,在Eclipse中,如果我要编译并运行克隆,则必须执行另一个项目,调整Java构建路径,Run/Debug目标等。 。除非使用Eclipse插件可以简化该任务。我想念这里的设施吗?
  • 如何缩放?我已经读过Hg对于大型代码库是可以的,但是我很困惑。在我的工作中,我们有一个Java应用程序(好几个,围绕着一个大的通用内核),大约有200万行,仅代码就重约110MB。在旧的(2004)Windows工作站上进行干净的编译需要大约15分钟的时间来生成50MB的类文件!我看不到自己会克隆整个项目来更改3个文件。那么这里的做法是什么?

  • 我尚未在阅读 Material 中看到这些问题,因此我希望这将成为一个有用的话题。

    最佳答案

    你提出了一些好点!



    没错,当IDE和其他工具依赖于绝对路径时,可能很难管理许多克隆。始终可以使用配置文件中的相对路径来解决其中的一部分-无论使用哪种版本控制系统,确保源 checkout 都可以从任何位置进行编译本身就是一个好目标。

    但是,当您不能或不想打扰几个克隆时,请注意a single clone can cope with multiple branches。 “hgbook”强调了许多克隆,因为这是一种概念上简单且非常安全的工作方式。当您获得更多经验时,您会发现可以在单个存储库中使用多个头(也许通过用bookmarks命名)来执行相同的操作。



    克隆110 MB的存储库应该非常快:这取决于将110 MB写入磁盘所需的时间。在recent message to the Mercurial mailinglist中,据报道克隆6.3 GB需要4分钟-将其缩小到110 MB大约需要4秒。那应该足够快,以使您的茶仍然温暖:-)窍门的一部分是,历史数据只是硬链接(hard link)的(是的,在Windows上也是如此),因此只需在工作中写出文件即可复制。

    关于ide - 商业实践: use with IDEs and scalability,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/403279/

    10-13 09:35