2

リポジトリを変換するために cvs2svn を使用しています。私は 1 つのリポジトリで成功を収めましたが、今、私の新しい問題は 2 番目のリポジトリです。

私の新しい変換では、HEAD と 1 つのブランチのみを変換したいと考えています。cvs2svn には、ブランチの「除外」機能のみがあり、「含める」機能はありません。私は多くの支店を持っており、それらのすべてを除外すると、多くの作業が必要になります....

トランク (HEAD) と 1 つのブランチのみを変換する方法はありますか?

ありがとう、オーデッド

4

2 に答える 2

1

1つの問題は、cvs2svnがブランチを含めるかどうかだけでなく、(同時に)シンボルがブランチであるかタグであるかを最初に判断する必要があることです。したがって、その1つのブランチといくつかのタグを含める場合は、単に「そのブランチのみを含める」と言うよりも困難です。そうすると、すべてのタグが強制終了されます。

IOW、cvs2svnは実際にはそれをサポートしていません。ソースコードを編集することで回避できます。cvs2svn_lib.symbol_strategy.BranchIfCommitsで、Branch(symbol)を返すケースを次のように変更します。

   if symbol.name == 'my_branch':
       return Branch(symbol)
   else:
       return ExcludedSymbol(symbol)

IIUC、BranchIfCommitsをデフォルトで使用する必要があります。

個人的には、別の戦略を使用します。

 1. convert the repository once, with all branches.
 2. do a "svn ls" on branches, and redirect that into a file.
 3. edit the file to construct an exclude regex out of it, of the form `b1|b2|...|bn`

私はそれをたくさんの仕事とは呼びません...

于 2009-08-25T06:56:46.630 に答える
1

1つのブランチのみを保持し、タグを保持したくない場合、これは簡単です。シンボルに一致する最初のルールが使用されるため、含めるブランチを指定してから、他のすべてを除外します。

cvs2svn --force-branch=mybranch --exclude='.*' ...

ブランチだけでなく、できるだけ多くのタグも含めたい場合は、少し注意が必要です。すべてのタグの名前を必ずしも知っているだけでなく、除外されたブランチに依存するタグを含めることもできません。この場合、-write-symbol-infoおよび--symbol-hintsオプションを使用するのが最も簡単です。

cvs2svn --write-symbol-info=symbol-info.out --passes=1:3 ...

これにより、すべてのCVSシンボルに関する情報を含む「symbol-info.out」というファイルが作成されます。エディターでこのファイルを開き、除外するブランチに対応するすべての行を見つけて、それらの行の3番目の列を「exclude」という単語に変更します。含めるブランチの行の3番目の列に「branch」という単語が含まれていることと、その4番目の列が最終的に到達するパスであることを確認してください。

ここで、パス3から開始し、編集したsymbol-infoファイルをシンボルヒントファイルとして使用して、cvs2svnを再度実行します。

cvs2svn --symbol-hints=symbol-info.out --passes=3 ...

次のような多くのエラーが発生します。

ERROR: ExcludedSymbol('FOO_BRANCH') cannot be excluded because the following symbols depend on it:
    BAR_TAG
    BAZ_TAG

ここでエディターに戻り、リストされているタグ(例ではBAR_TAGとBAZ_TAG)も除外するように変更してから、pass3を再度実行してみてください。この手順は数回繰り返す必要があるかもしれませんが、pass3は非常に高速に実行されるため、面倒なことではありません。

pass3をエラーなしで完了したら、残りの変換を実行します。

cvs2svn --symbol-hints=symbol-info.out --passes=4: ...
于 2009-08-25T07:27:35.180 に答える