【问题标题】:On converting from cvs to mercurial关于从 cvs 转换为 mercurial
【发布时间】:2011-04-14 21:42:03
【问题描述】:

我有一个巨大的 CVS 存储库,我想将其转换为几个 hg 存储库。 This 问题类似,但我使用的是hg convert,而且我在 cvs 中有多个目录,应该放在给定的 hg repo 中。这是一个例子:

/sw
 .../dir1
 .../dir2
 .../dir3
 .../dir4
 .../dir5

我想要 dir1、dir2 和 dir4 在我的 hg 存储库中,但是 dir3 可以与 dir5 在一个单独的目录中腐烂,没人会使用。

我一直在用hg convert --branchsort sw 转换整个东西,其中sw 是一个沙盒结帐,只包含我关心的目录。这为我提供了一个包含所有 4 个目录的 1.7GB hg 存储库。 CVS 存储库是 2.3GB,但沙盒只有 159MB。 hg repo 的历史可以追溯到 1997 年,这很棒,但其中的一些东西来自已停产的产品。它们不需要位于常规的开发人员沙箱中。

那么,有没有办法挑选 CVS 目录进入我的新 hg 存储库?

【问题讨论】:

  • 不是 CVS 用户 -- 所以不能肯定 -- 但 hg convert 的文件映射指定 include 用于您想要的三个目录,exclude 用于其他目录,应该给你你想要的。

标签: mercurial cvs


【解决方案1】:

您应该听从我对您所链接的问题的建议。将所有内容转换在一起,然后使用 hg -> hg converts 使用文件映射在每个 repo 中选择您想要的部分。任何为空的修订(仅包含您在该对话中排除的文件)都将被忽略。

此外,hg 到 hg 的转换要快得多,因此您可以只执行一次缓慢的 CVS 转换,然后一次又一次地执行 hg 到 hg 部分,直到您对结果满意为止。

【讨论】:

    【解决方案2】:

    您是否有权访问 CVS 存储库存储?

    如果是,那么您应该能够制作存储库的完整副本,删除您不想转换的所有文件/目录,然后运行 ​​hg convert 并使用从该本地存储库签出的工作目录。

    我说应该是因为我还没有尝试过,但是由于 CVS 以每个文件为基础存储修订历史记录,所以我没有理由认为它不应该这样做。它适用于像 Subversion 这样的 SCM,它将多个更改存储在单个修订中。

    【讨论】:

    • 我确实想转换其他目录以用于存档目的(以及我们在 6 年前的产品中修复的偶尔错误),如果问题不清楚,很抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多