17

Subversion から Mercurial に移行していて、SVN から Hg への変換プロセスで問題が発生しました。現在、私たちの単一の SVN リポジトリは、いくつかの異なる「プロジェクト」のコードを保持しており、移行プロセスでそれらを分割したいと考えています。私たちの SVN リポジトリは次のように構成されています。

.
|-- proj1
|   |-- branches
|   |-- tags
|   `-- trunk
`-- proj2
    |-- branches
    |-- tags
    `-- trunk

proj1単純にproj2独自の Hg リポジトリを作成したいと考えています。もちろん、特定の履歴をのログにproj1表示したくもありません。proj2現在、hg convert変換が行われると、ブランチとトランクを区別することさえせずに、すべてのファイルをかなりばかげて読み取るだけです。

ディレクトリでフィルタリングし、SVN ブランチを認識するプロセスは何hg convertですか?

4

3 に答える 3

8

ConvertExtension wiki ページのおかげで、今は機能しています。

Ry4an の方法を試してみましたが、すべてを分割する前に最初に SVN リポジトリを中間の Mercurial リポジトリに変換する必要があるという欠点があり、それぞれ独自のプロジェクトが 2 つあるため、ブランチ、トランク、およびタグが認識されませんでした。枝、幹、およびタグ。

ブランチ、トランク、およびタグのディレクトリを手動で指定すると、一度に 1 つのプロジェクトを SVN から Mercurial に変換するのにうまく機能することがわかりました。

hg \
--config convert.svn.trunk=proj1/trunk \
--config convert.svn.branches=proj1/branches \
--config convert.svn.tags=proj1/tags \
convert --authors authors.txt original-svn-dir hg-proj1

これにより、SVN ブランチ、タグ、およびトランクが認識さproj1、リビジョンのみが同時にフィルター処理されます。それから、私はちょうどそれを繰り返しましたproj2

于 2010-11-18T04:25:08.110 に答える
2

それを解決する別の方法は、svn ドキュメントで説明されているように、svnadmin ダンプと svndumpfilter を使用して、svn リポジトリをプロジェクトごとに 1 つの新しい svn リポジトリに分割することです。 リポジトリ履歴のフィルタリングによるリポジトリの分割

于 2010-11-18T11:52:31.773 に答える
0

これは、提案したように「convert」拡張機能を使用して簡単に実行できます。手順は次のとおりです。

  1. hg convert SVNREPO all-in-one-mercurial-reposvnからmercurialまですべてを実行します
  2. 複数のhg convert --filemap projectfilemap.txt all-in-one-mercurial-repo project-repoコマンドを実行します-プロジェクトごとに1つ

これらのファイルマップには、次のような行があります。

exclude proj1
rename proj2 .

これは、オールインワンのMercurialリポジトリからプロジェクト2のリポジトリを抽出するときに使用されるファイルマップです。これらのマップに個々のファイルをリストする必要があるかもしれませんが、ディレクトリは問題ないと思います。

SOに関する別の質問があります。ここでは、ほぼ同じ質問に答えて完全な例を貼り付けましたが、それで十分です。

于 2010-11-18T02:30:28.413 に答える