編集:バウンティがまもなく期限切れになるので、これをさらに明確にします。履歴を(異なるSCMからプルして)Mercurialの特定のブランチに直接インポートする方法はありますか?
私は現在、Perforceを使用している会社で働いており、Mercurialを使用した分散バージョン管理の方法を作っています。私はperfarceを使用してPerforceの履歴をインポートすることに成功しました(適切な名前です。見たり言うたびに笑ったりします)が、これは一度に1つのブランチでしか機能しません。
P4統合設定の仕組みは次のとおりです。
- perforceで「クライアント」を作成します。これは、絶えず更新/チェックアウトする対象の説明の一種です。これは、一度に1つのブランチ(トランクまたはその他)しかアドレス指定できません。
- これを実行したら、実行します
hg clone p4://<server>/<client_name>
- .hg / hgrcに移動し、perforceパスの行を追加します。
perforce = p4://<server>/<client_name>
- Mercurialでコードを正常に処理し、
hg pull perforce
同期をとって、hg push
チェンジリストをエクスポートします。
私ができることは、ブランチごとにPERFORCEパスを設定し、すべてを同じリポジトリで機能させることです。現在、プッシュは問題ではありませんが、別のブランチから履歴をプルすると、デフォルトのブランチになります。
私は何かをすることができhg pull perforce-R5
て、それをmercurialのR5ブランチに着陸させたいと思っています。マージの履歴がなくても、ブランチの履歴を保存できるほど十分に甘いでしょう。
Mercurialを統合できるCVCS用のプラグインは他にもありますが、サブバージョン1には同じ問題があります。
これを行うための簡単な方法はないと思いますが、1つのMercurialマシンでいくつかのフックとスクリプトを使用してプロセスを自動化できれば、それで十分です。
編集:物事を少し明確にするために:
- PERFORCE トランクはMercurialのデフォルトのブランチにマッピングされています
- PERFORCE R1ブランチはMercurialのリリース1ブランチにマップする必要があります(R2、R3などでも同じ)
- Mercurialにperforceからプルするように指示すると(つまり
hg pull perforce
、「perforce」はPerforceクライアントを指すパスの名前です)、PerforceトランクをMercurialのデフォルトにプルする必要があります。 - Mercurialにperforce-R1からプルするように指示すると(つまり
hg pull perforce-R1
、「perforce-R1」はR1クライアントへのパスです)、Perforce R1ブランチをMercurialの「release-1」ブランチにプルする必要があります。これは私が質問している部分です。
私はこれを手伝うことができると確信しています(Mercurialにこだわっており、過去にp4からhgに移行したことがある)。少しわかりやすくするために。
—
Ed James