シナリオ:
私は2つのHgリポジトリを持っています。1つはSVNリポジトリ、たとえばSVN-trackを追跡し、もう1つは最初からチェンジセットをプルするローカルのpure-Hgリポジトリです。
チェンジセットをpure-HgリポジトリからSVN-trackリポジトリにプッシュし、次に、履歴が適切でまっすぐになるまで、プッシュされたチェンジセットをSVN -trackリポジトリにリベースして、SVNリポジトリにプッシュできるようにします。
SVNにプッシュした後、hgsubversionはチェンジセットをSVNからプルバックし、元のチェンジセットを削除します。これはそれが追跡する方法です、私は集めます(しかし...なぜオリジナルを保持してそれを追跡しないのですか?)。
問題:
さて、これだけ長く待ち続けていると、問題が発生します。SVNチェンジセットをpure-Hgリポジトリに戻したいのですが、元のチェンジセットはすべて、別のヘッドで重複として(ただしノードIDが異なる)戻ってきます。pure-Hgリポジトリに追加したすべてのチェンジセットをリベースできる可能性がありますが、その後は履歴が失われ、実際には、作業が多すぎるように見えます。重複したコンテンツを含むプルされたSVNチェンジセットを使用してローカルにマージすることもできますが、これにより、SVNトラックへのプッシュバックがますます困難になります。
質問:
- 私が支援なしで神聖にすることができないこのワークフローを実行するためのより良い方法はありますか?
- そうでない場合、hgsubversionが純粋なHgでSVNからプルバックする元のチェンジセットを置き換えるにはどうすればよいですか?
- なぜhgsubversion(ほとんどの場合素晴らしい有効化ツール)がSVNチェンジセットをプルして、それらを追跡する必要があるのですか?元のチェンジセットを保持して
.hg/svn/rev_map
、元のチェンジセットIDを示す行を追加するだけではいけませんか? - もしそうなら、これへのトリックは何ですか?