从cvs转换为mercurial时功能分支中的修订错误

时间:2013-02-25 10:21:25

标签: mercurial cvs

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

我们使用内置工具转换为以下命令。

hg转换cvs_source_dir hg_new

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

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

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

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

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,分支FEATURE没有分支MAIN中存在的某些文件,那么当你hg up分支FEATURE时,这些文件就会丢失。

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

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

[更新] 一个图表,显示如何使其正确:

(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)