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:\开发\我的产品\模型

合并成功。我猜错误消息告诉我我无法在根级别执行此操作。

问题

  1. 除了选择每个项目的文件夹(示例中的文件夹多于 2 个)并重复该过程,然后对下的每个文件重复该过程之外,我是否有任何选项可以完全合并分支C:\Dev\MyProduct
  2. 不建议以这种方式构建SVN吗?如果没有,我应该如何构建事物以便每个产品都有一个存储库?
4

1 回答 1

2

您可能希望以不同的方式构建您的存储库。有两种通用方法可以做到这一点:

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

和:

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

您选择哪一个取决于您是要分支和合并每个单独的项目(第一个选项),还是将所有项目合并在一起(第二个选项)。

如果您需要将位于存储库根目录中的现有项目文件移动到新的 /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

如果您手动执行,“svn mv”行将如下所示:

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