編集:バウンティが間もなく期限切れになるので、これをさらに明確にします:履歴を(異なるSCMからプルして)特定のブランチに直接インポートする方法はありますかMercurialとは?
私は現在、Perforceを使用している会社で働いており、Mercurialを使用した分散バージョン管理に道を譲っています。 perfarce (かなり適切な名前です。見る/言うたびに笑います)を使用してPERFORCEの履歴をインポートすることに成功しましたただし、これは一度に1つのブランチでのみ機能します。
P4統合セットアップの仕組みは次のとおりです。
hg clone p4://<server>/<client_name>
を実行しますperforce = p4://<server>/<client_name>
hg pull perforce
を実行して同期し、hg Push
を実行してチェンジリストをエクスポートします私ができるようにしたいのは、ブランチごとにPERFORCEパスを設定し、すべてを同じリポジトリで機能させることです。現在、プッシュは問題ではありませんが、別のブランチから履歴をプルすると、デフォルトのブランチになります。
hg pull perforce-R5
のようなことをして、MercurialのR5ブランチに着陸させたいのですが。マージの履歴がなくても、ブランチの履歴を保存できるほど甘いでしょう。
Mercurialを統合できるCVCS用の他のプラグインもありますが、Subversionのものにも同じ問題があります。
これを簡単に行う方法はないと思いますが、単一のMercurialマシンでいくつかのフックとスクリプトを使用してプロセスを自動化できれば、それで十分です。
編集:物事をもう少し明確にするために:
hg pull perforce
、ここで「perforce」はPerforceクライアントを指すパスの名前です)、PerforceトランクをMercurialのデフォルトにプルする必要があります。hg pull perforce-R1
、ここで「perforce-R1」はR1クライアントへのパスです)、PerforceR1ブランチをMercurialの「release-1」ブランチにプルする必要があります。 これIS私が質問している部分。これが直接できるとは思いません。
1つのオプションは、次の手順のようなものを使用して、プル後にrebase
ツールを使用して、リポジトリの適切な部分を他のブランチに移動することです。
hg branch release-1
hg commit -m "Created branch"
hg pull perforce-R1
hg rebase -s <first changeset of perforce-R1> -d release-1