【问题标题】:mercurial use case solution水银用例解决方案
【发布时间】:2009-10-31 15:02:11
【问题描述】:

我参与的项目有很多由不同开发人员管理的小模块。我们目前正在使用 svn 但想切换到 mercurial,因为我们需要去客户端站点并进行一些开发因此管理版本变得困难..

但是完整的主干大约有 4-5 GB,并且为所有模块创建一个存储库意味着如果我需要捆绑存储库,我需要移动这 4-5 Gigs 的文件..我不能接受对存在 .hg 文件夹的一个基本文件夹中的较小模块(因为它们没有 .hg 文件夹)进行备份,因为它不会给我任何从备份模块(文件夹)中提交的方式.. 那是什么处理这样一种情况的最佳方法,即一个项目有许多模块,然后说......所有开发人员都带着自己的单独模块(将要传输的数据大小保持在最低限度),在任何他们想要的地方编写代码,然后将其带回并合并他们的分支。

我想到的一个明显的解决方案是,每个模块都成为一个 repo,但是当一个集成产品发布时,这将很难特别管理..那个版本指的是什么版本??因为所有模块都有自己的版本历史??

更明显的情况是,如果我将完整的 svn 历史记录转换为 mercurial..那么如果在主干上完成转换,它将生成一个单独的 repo,但大小很大..每个模块所有者都带着这个巨大的捆绑包他每次都会毫无意义..

那么有什么建议吗??

谢谢。

【问题讨论】:

  • 您应该查看子模块功能或林扩展。

标签: svn mercurial


【解决方案1】:

Tonfa 在评论中说,但我会把它放在那里作为答案:使用 Mercurial 的 Submodule Support。它说是实验性的,但它已经通过了 1.3 版本的几个月,没有重大错误或更改,所以我怀疑它进入了任何即将发生的更改都将向后兼容的区域。

另外,如果您有一些非常大的文件 (> 10MB) 膨胀了 repo,您​​可以使用 Big Files Extension 将它们移出直接控制,但仍跟踪它们的版本。

不过,总的来说,我发现如果我的构建脚本足够全面,可以下载大型非手工编辑的资产,而不是将它们置于源代码管理中,那么存储库的大小就不会增长到 4 或 5 GB - 这是很多KLoC。也许这次迁移是使用 Ivy 之类的依赖项下载工具或任何适合您的开发环境的工具的好时机。

【讨论】:

    【解决方案2】:

    在网站上,我们将除 MP3 和 FLV 文件之外的所有文件都放在 mercurial 下,而且很少超过 300MB。此外,磁盘很便宜。如果您和客户站点之间存在带宽问题(或某种安全问题),您可能只想将整个树克隆到拇指驱动器上,转到客户站点并破解,然后回家并更改合并。

    Mercurial 从根本上改变了我看待版本控制的方式。这样的事情曾经很重要,现在……嗯。

    【讨论】:

    • “这样的东西曾经很重要,现在……嗯”——酷,我喜欢 :-)
    • 很高兴你喜欢它。我是个老人......我的意思是。我的 SCCS 和 RCS 档案可以追溯到 80 年代初。我们曾经站在我们的头上,试图实现您使用 Hg 和 SSH 开箱即用的一小部分功能。上帝,我是否曾希望我们在 70 年代在施乐有 Hg。 (当然,这意味着我们使用 Python 而不是 BCPL,这样也不错。)
    • 是的,我同意 hg 也确实改变了我看待版本控制的方式。我爱上了 mercurial.. 真是太棒了!迫不及待地想看到更多的功能内置到它里面.. 以切换 b/w hg 的差距和旧版本控制工具所具有的一些仍然很好的方法..
    • @ashishsony:所以请具体说明您希望看到的功能。我并不是说 Hg 拥有一切,但听到一两件事可以将一个好的项目推向伟大,这总是很有趣。
    猜你喜欢
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    相关资源
    最近更新 更多