1

最近、cvs2svn ツールを使用して CVS から SVN に移行しました。私のプロジェクトの1つの新しく移行されたプロジェクトでは、最新バージョンはブランチA(親ディレクトリ)などのブランチの一部です。このプロジェクト内には、サブプロジェクトがあり、その最新バージョンはブランチ B などの別のブランチです。つまり、基本的にトランクにはメイン プロジェクトの最新バージョンがありません。

したがって、CVS で親フォルダー (ブランチ A) をチェックアウトしたら、サブプロジェクトまでブラウズし、右クリック > CVS > 特別に更新 > ブランチ B を選択します (ブランチ B にはサブプロジェクトの最新版があるため)。これにより、サブプロジェクトの最新バージョンがチェックアウトされ、メイン プロジェクトの最新バージョンが得られます。

ただし、SVN では、このオプションは表示されません。私の知る限り、SVN はブランチではなくリビジョンでのみ更新できます。私はSVNを初めて使用するので、間違っている可能性が高くなります。CVS シナリオで私がやろうとしていたことを行う方法はありますか?

メインプロジェクト(ブランチA)をチェックアウトしてから、サブプロジェクト(ブランチB)を個別にチェックアウトする方法を考え出しました。次に、このサブプロジェクトを最初のチェックアウト (親プロジェクト - ブランチ A) から削除し、サブプロジェクトの 2 番目のチェックアウト バージョンに置き換えます。

4

2 に答える 2

1

svn externalsで目標を達成できるかもしれません。サブプロジェクトは、別のリポジトリの外部になります。

于 2012-04-19T18:17:05.970 に答える
0

Sparse Branching を実行しようとしていたようです。スパース ブランチでは、ベースとして 1 つのブランチ (ブランチ Aと呼びます) があり、別のブランチ (ブランチ Bと呼びます) には、ブランチ全体ではなく、ブランチ Aからの変更のみを配置します。

分岐には時間がかかるため、これは CVS で行われることがあります。小規模なプロジェクトでは 20 分、大規模なプロジェクトでは最大 1 時間かかることがわかりました。ただし、追跡するのは非常に困難であり、それを使用しているサイトでは、チェックアウトがどのように行われると想定されているかを追跡できない傾向があることがわかりました. 継続的なビルド システムは、CVS Sparse Branching セットアップも処理できません。

Subversion はスパース ブランチを (少なくとも非常に簡単に) 実行しませんが、Subversion でのブランチはすばやく簡単に実行できます。ブランチの作成には 1 秒もかかりません。Subversion では、Branch Aを使用して、Branch AからBranch Bを作成する必要があります。次に、 Branch ABranch Bのすべての違いをBranch Aに置きます。ブランチ Aへの変更は、定期的にブランチ Bにマージする必要があります。

まばらな分岐の問題は、ファイルが両方の分岐で変更された場合、決して取得されないことです。マージすると、両方のブランチの変更がブランチ Bのファイルに追加されます。これが、Sparse Branching を行うサイトが非常に少ない理由です。

ブランチ Aから新しいブランチ Bを作成し、古いブランチ Bにあるすべての変更をこの新しいブランチ Bに加えてチェックインする必要があります。その後、ブランチ B には必要なすべてのファイルが含まれます。継続的統合システムであり、ファイルのチェックインとチェックアウトは 1 ステップの操作です。

于 2012-04-19T20:56:11.557 に答える