关于svn:如何创建分支?

How do I create a branch?

如何在SVN中创建分支?


使用svn copy命令创建一个新分支,如下所示:

1
2
3
$ svn copy svn+ssh://host.example.com/repos/project/trunk \
           svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
      -m"Creating a branch of project"


Subversion中的分支是通过非常轻便高效的复制工具实现的。

分支和标记实际上是相同的。只需使用svn copy命令将存储库中的整个文件夹复制到存储库中的其他位置。

基本上,这意味着按照惯例,复制文件夹的含义-无论是备份,标签,分支还是其他。根据您对事物的看法(通常取决于您过去使用的SCM工具),您需要在存储库中设置一个文件夹结构来支持您的样式。

常见样式是在存储库顶部有一堆名为tagsbranchestrunk等的文件夹-允许您将整个trunk(或子集)复制到< x2>和/或branches文件夹。如果您有多个项目,则可能需要在每个项目下复制这种结构:

可能需要一段时间才能习惯该概念-但它确实有效-只要确保您(和您的团队)对将要使用的约定清楚。拥有良好的命名约定也是一个好主意-可以告诉您创建分支/标记的原因以及是否仍然合适-可以考虑将过时的分支归档。


如果您可以通过https访问仓库,则可以使用此命令分支...

1
2
3
svn copy https://host.example.com/repos/project/trunk \
       https://host.example.com/repos/project/branches/branch-name \
  -m"Creating a branch of project"

1
svn cp /trunk/ /branch/NEW_Branch

如果您的中继有一些本地更改,请使用Rsync同步更改

1
rsync -r -v -p --exclude".svn" /trunk/ /branch/NEW_Branch


假设您要根据中继名称创建分支(如" TEST")
然后使用:

1
svn cp -m"CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST

通常,您会将其复制到svn + ssh://host.example.com/repos/project/branches/mybranch,以便可以在存储库中保留多个分支,但是语法是有效的。

这是有关如何设置存储库布局的一些建议。


SVN新用户的最佳技巧;这可能有助于快速获取正确的网址。

运行svn info以显示有关当前已检出分支的有用信息。

该URL应该(如果您在根文件夹中运行svn)为您提供了需要复制的URL。

另外,要切换到新创建的分支,请使用svn switch命令:

1
svn switch http://my.repo.url/myrepo/branches/newBranchName


如果您甚至打算合并分支,我强烈建议您看一下:

Svnmerge.py

我听说Subversion 1.5内置了更多的合并跟踪功能,对此我没有任何经验。我的项目在1.4.x上,而svnmerge.py可以挽救生命!


  • 在当前项目之外创建一个新文件夹。您可以给它起任何名字。 (示例:您有一个名为" Customization"的项目的结帐。它有许多项目,例如" Project1"," Project2"。...并且您想创建" Project1"的分支。因此,首先打开"自定义",右键单击并创建一个新文件夹,并将其命名为" Project1Branch")。
  • 右键单击" Myproject1"。...TortoiseSVN->分支/标签。
  • 选择工作副本。
  • 打开浏览器...。仅在"至URL"上平行。
  • 选择自定义.....右键单击,然后添加文件夹。并浏览您创建的文件夹。这是" Project1Branch"。现在单击确定按钮添加。
  • 签出这个新的分支。
  • 再次转到项目要创建的分支。右键单击TorotoiseSVN->分支/标签。然后选择工作副本。您可以将URL作为您的分支名称。例如{您的IP地址/ svn / AAAA / Customization / Project1Branch}。并且您可以在URL中设置名称,以便仅使用该名称创建文件夹。
    类似于{您的IP地址/ svn / AAAA /自定义/ Project1Branch / MyProject1Branch}。
  • 按确定按钮。现在您可以看到日志...您的工作副本将存储在您的分支机构中。
  • 现在您可以签出...,让您享受工作。 :)