0

我们正在将具有两个分支(一个是 MAIN,另一个是 FEATURE,其余的都可以忽略)的 cvs 存储库转换为一个 mercurial 存储库。

我们正在使用带有以下命令的内置工具转换。

hg 转换 cvs_source_dir hg_new

其中 cvs_source_dir = 更新的目录,只有 CVS 的功能分支更改。hg_new= mercurial 存储库的新名称。

转换后,hg_new 存储库包含来自 CVS 的所有历史数据。当我们进行 hg 更新时,它指向 MAIN 分支代码。

如果我们根据 CVS 将其更新为 FEATURE 以从 FEAUTURE 分支获取代码,则使用

hg update FEAUTURE,所有在 FEAUTURE 分支中没有修订的文件都将被删除。

如何解决?

4

1 回答 1

0

如果我理解正确,分支 FEATURE 没有某些文件存在于分支 MAIN 中,因此当您hg up分支 FEATURE 时,这些文件丢失了。

我认为这是一项功能,可hg up在您提交时将您的工作目录带入状态(-c将检查未提交的更改),因此分支 FEATURE 中不存在的文件将消失。

这篇文章展示了一种从另一个分支获取所需文件的方法。如果您有一个文件列表,请迭代该列表并将每个文件都放到您当前的工作目录中。

[更新] 显示如何正确处理的图表:

(1) 您目前的状态

A -- B -- C -- D (MAIN)
  \
   - E -- F -- G (FEATURE, missing files)

(2)步骤1:

A -- B -- C -- D (MAIN)
  \
   - E -- F -- G (FEATURE, missing files)
    \
     -H (FEATURE, a head adding all missing files from A)

(3)步骤2:

A -- B -- C -- D (MAIN)
  \
   - H - (rebase) - E' -- F' -- G' (FEATURE, missing files)
于 2013-02-26T08:27:05.310 回答