1

複数のプロジェクトを含む VS2010 ソリューションがあります。フォルダ構造は次のようになります。

C:\Dev\MyProduct
    MyProduct.sln
    UI
        UI.csproj
        SomeFile.cs
    Model
        Model.csproj
        SomeModel.cs

コードの最初の製品リリースのブランチを作成しました。そのブランチでいくつかの修正を行う必要があったことが判明し、そのブランチをトランクに再統合したいと考えています。私はそれを行うためにTortoiseSVNを使用しています(同様の結果でAnkhSVNも試しました)。

フォルダを選択すると

C:\Dev\MyProduct

右クリックして [ TortoiseSVN / Merge ] を選択します。ウィザードに従って [ Reintegrate a branch ] を選択し、ブランチの URL を入力して、マージを実行できます。その結果、

再統合のソースもターゲットも、リポジトリのルートになることはできません

同じ手順を繰り返すと

C:\Dev\MyProduct\モデル

マージは成功します。エラーメッセージは、ルートレベルではそれを行うことができないことを示していると思います.

質問

  1. 各プロジェクトのフォルダー (例では 2 つ以上あります) を選択し、手順を繰り返してから、下の各ファイルに対して手順を繰り返す以外に、ブランチを完全にマージする現在の構造を考えると、オプションはありますC:\Dev\MyProductか?
  2. この方法で SVN を構成することはお勧めできませんか? そうでない場合、製品ごとに 1 つのリポジトリーを持つようにするにはどうすればよいですか?
4

1 に答える 1

2

リポジトリを別の方法で構造化することをお勧めします。これを行うには、一般的に2つの方法があります。

/project1/trunk
/project1/branches
/project1/tags
/project2/trunk
/project2/branches
/project2/tags
...

と:

/trunk/project1
/trunk/project2
/branches
/tags

どちらを選択するかは、個々のプロジェクトを分岐してマージするか(最初のオプション)、すべてのプロジェクトを一緒にマージするか(2番目のオプション)によって異なります。

リポジトリルートにある既存のプロジェクトファイルを新しい/trunkディレクトリに移動する必要がある場合は、次のようにする必要があります。

cd /path/to/repo
files=`eval "echo *"`
mkdir trunk branches tags
svn add trunk branches tags
svn commit -m "adding the proper subdirectories"
svn mv `echo $files | sed 's/^/^\//g' | sed 's/ / ^\//g'` ^/trunk/ -m "moving project files into trunk"
svn up

手作業で行うと、その「svnmv」行は次のようになります。

svn mv ^/dir1 ^/dir2 ^/file1 ^/file2 ^/trunk/ -m "moving project files into trunk"
于 2012-07-18T04:07:09.953 に答える