2012-06-19 7 views
6

最近、私の水銀のリポジトリ内のいくつかのファイルをすべてモジュールを整理してサブディレクトリに移動しました。数日後、私は別のプロジェクトでそのモジュールが必要であることを知ったので、私はそれを独自の水銀のリポジトリに変換しようとしています。水銀リポジトリを完全履歴付きサブリポジトリに変換する(hg log -fなど)

私が直面している問題は、新しいリポジトリ履歴が完全ではなく、名前変更後のファイルの履歴のみが含まれていることです。私が得ている履歴はhg log filenameを実行するのと同じです。私が望むのは、ファイルの完全な履歴を持つことです。出力はhg log -f filenameです。

私には何が欠けていますか?

ありがとうございました。

私はあなたがこのような構造のようなものを持っていたと仮定し
+0

名前を変更したり、削除して操作を追加しましたか? – Eiver

+0

削除して追加しますが、hg addremoveによって名前の変更が検出されました。 –

答えて

8

main.c 
lib1.c 
lib2.c 

あなたがファイルを名前を変更し、このような何かを得た:

main.c 
lib/lib1.c 
lib/lib2.c 

あなたは今、あなたlibリポジトリとして、このような何かをしたい:

lib1.c 
lib2.c 

この最後の部分は、あなたがサブとして含めるとリポジトリの名前を変更すると元のリポジトリの名前が変更されたように見えます。

私はこれをいくつかの段階で行います。

最初の段階は、おそらく既に行ったようにすることです。コマンドラインhg convert --filemap LibTempMap.txt Main LibTempLibTempMap.txt次の内容でリポジトリを変換します

exclude * 
include lib 
rename lib . 

これは、あなたの名前を変更した後の歴史を持つリポジトリを提供します。

第二段階では、コマンドラインhg convert --rev X --filemap LibMap.txt Main Lib(Xは、名前の変更前のリビジョンである場合)とLibMap.txt以下の内容で、リネームする前に、リポジトリを変換するために、次のようになります。

exclude * 
include lib1.c 
include lib2.c 

これはあなたのリポジトリを提供します名前の変更前の履歴が表示されます。

Iは、次いで、(YLibTempリポジトリにリネーム後のリビジョンである)Libフォルダ内からhg transplant -s ..\LibTemp Y:tipを用いLibTempからLibに後で変更を移植であろう。変換中に名前を変更することで、ファイル構造が一時リポジトリ内で同じであることを確認したら、これはきちんと移植する必要があります。

その後、Libリポジトリに履歴とファイルが含まれており、LibTempリポジトリを削除することができます。

関連する問題