0

2 つのブランチ (1 つは MAIN で、もう 1 つは FEATURE で、残りはすべて無視できます) を持つ cvs リポジトリを Mercurial リポジトリに変換しています。

次のコマンドで組み込みツール convert を使用しています。

hg convert cvs_source_dir hg_new

ここで、cvs_source_dir = CVS からのフィーチャー ブランチの変更のみで更新されたディレクトリ。hg_new= Mercurial リポジトリの新しい名前。

変換後、hg_new リポジトリには CVS からのすべての履歴データが含まれます。hg update を実行すると、それは MAIN ブランチ コードを指します。

そして、それを FEATURE に更新して、 CVS に従って FEATURE ブランチからコードを取得すると、

hg update FEAUTURE、FEAUTUREブランチにリビジョンがないすべてのファイルが削除されています。

これはどのように解決できますか?

4

1 に答える 1

0

私の理解が正しければ、ブランチ FEATURE にはブランチ MAIN に存在するファイルがいくつかないため、hg upFEATURE をブランチすると、これらのファイルが欠落します。

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 に答える