1

SVNリポジトリでより大きなコードベースを維持しています。リリースの場合、トランクからの履歴を除いて、リリースタグ/ブランチのみをMercurialリポジトリにプッシュします。

私はDVCSの経験がほとんどないので、試したことで間違った方向に進んでいる可能性があります。欠陥を指摘したり、代替案を指摘したりできれば、とてもうれしいです。

これが私がこれまでに試したことです:

  • hg convert extension変換拡張機能のドキュメントhg convert <base project URL w/o "trunk">に従って、ブランチとタグを含む完全な履歴をプルするために使用する完全なリポジトリを変換しました。ただし、ヒントデフォルトのみを返し、デフォルトのみを返します。また、それは非常に遅く(はい、私はについて読みました)、完全な履歴が含まれています。インクリメンタルプルに使用できることを読みましたが、それがうまく機能していないようです。hg tagshg branchessvnsync

  • hg convert extension:タグの変換と別のタグからのプルはw /で機能-fしますが、私はそれを本当に信用していません。削除を正しく処理しますか?

  • hgsubversionhg clone完全なリポジトリのタグとブランチも除外します

  • hgsubversionhg cloneタグ上では機能しますが、別のタグからプルすることはできません(中止:リポジトリ内の別のパスで機​​能できません)

ポインタをよろしくお願いします。「Noob、最初にこれを読んで、後で戻ってきてください」もありがたいです。

4

1 に答える 1

0

私自身の質問に答える:私は必要なことを達成する方法を見つけました。

ベースラインを配信したい空のhgリポジトリがあると仮定して、.hgignoreすべてのsvnメタデータをフィルタリングするファイルを追加します。

syntax glob 
.svn

次に、次のことを行います。

  1. svn co <tag url> .
  2. hg addremove
  3. hg commit -m"pulled rev. <tag>"
  4. hg tag <tag>

以降のリリースでは、次のことを行います。

  1. svn switch <tag url> .
  2. hg addremovehg commithg tag​​上記のように

これにより、hgリポジトリ内のリビジョンを切り替えることができ、ベースライン間で変更されたファイルの履歴がありますが、svnコミットレベルではありません。

これについて何か意見はありますか?ありがとう。

于 2011-04-01T15:23:18.623 に答える