spa*_*kes 602

使用以下svn copy命令创建新分支:

$ 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"
Run Code Online (Sandbox Code Playgroud)

  • 接下来使用`svn switch svn + ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .`(如果你想将当前结账切换到新分支)或`svn checkout svn + ssh:// host. example.com/repos/project/branches/NAME_OF_BRANCH`(如果你想在单独的目录中有新的分支)开始处理新创建的分支. (23认同)
  • ***注意:***在某些情况下,您需要使用`` - parent`**选项和`svn copy`! (3认同)

Ron*_*nie 347

Subversion中的分支通过非常轻便和高效的复制设施来促进.

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

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

常见的样式是在您的仓库叫的顶部有一堆文件夹tags,branches,trunk,等等-这允许您在整个复制trunk(或子集)进入tags和/或branches文件夹.如果您有多个项目,则可能需要在每个项目下复制此类结构:

它可能需要一段时间才能适应这个概念 - 但它确实有效 - 只要确保你(和你的团队)清楚你要使用的约定.拥有一个良好的命名约定也是一个好主意 - 这可以告诉你为什么分支/标签已经完成以及它是否仍然合适 - 考虑归档已经过时的分支的方法.

  • "svn copy"的优势在于它将保留分支之前的历史记录.手动复制到另一个目录不会. (211认同)
  • 另请注意,标记或分支"trunk"的子目录通常是个坏主意.这使得很难跟踪哪个子目录被分支,并且大多数工具将被这些分支混淆(例如,切换分支将意味着WC的目录结构发生变化,这将混淆IDE和构建工具).只是总是分支"主干". (5认同)
  • @Will 实际上`svn cp` 使用廉价副本,它在分支期间**不** 复制实际文件。见 http://svnbook.red-bean.com/en/1.1/ch04s02.html (3认同)

Dav*_*ave 33

如果您通过https提供回购,则可以使用此命令进行分支...

svn copy https://host.example.com/repos/project/trunk \
       https://host.example.com/repos/project/branches/branch-name \
  -m "Creating a branch of project"
Run Code Online (Sandbox Code Playgroud)


Par*_*fna 25

svn cp /trunk/ /branch/NEW_Branch
Run Code Online (Sandbox Code Playgroud)

如果您在主干中有一些本地更改,则使用Rsync同步更改

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
Run Code Online (Sandbox Code Playgroud)

  • 它确实用svn确认,版本为1.8.5 (4认同)
  • 没有要求以这种方式使用`rsync`.`svn cp`也会复制任何本地更改. (2认同)

Cha*_*nil 15

假设您要从主干名称创建分支(作为"TEST"),然后使用:

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
Run Code Online (Sandbox Code Playgroud)


pix*_*x0r 14

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

以下是有关如何设置存储库布局的一些建议.


chi*_*him 12

新SVN用户的最佳提示; 这可能有助于快速获取正确的URL.

运行svn info以显示有关当前签出分支的有用信息.

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

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

svn switch http://my.repo.url/myrepo/branches/newBranchName
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用^代替Repository Root (3认同)

bas*_*ero 11

如果你打算合并你的分支,我强烈建议你看看这个:

Svnmerge.py

我听说Subversion 1.5构建了更多的合并跟踪,我没有经验.我的项目是在1.4.x上,svnmerge.py是一个救生员!


小智 6

  • 在当前项目之外创建一个新文件夹.你可以给它任何名字.(例如:你有一个名为"Customization"的项目的结帐.它有很多项目,比如"Project1","Project2"....你想要创建一个"Project1"的分支.所以首先打开" "自定义",右键单击并创建一个新文件夹并为其命名,"Project1Branch").
  • 右键单击"Myproject1".... TortoiseSVN - >分支/标记.
  • 选择工作副本.
  • 打开浏览器....在"To URL"上右键并行.
  • 选择自定义.....右键单击然后添加文件夹.并浏览您创建的文件夹.这是"Project1Branch".现在点击OK按钮添加.
  • 结账这个新的banch.
  • 再次转到您想要创建的分支项目.右键单击TorotoiseSVN - > branch/tag.然后选择工作副本.您可以将URL作为分支名称.比如{你的IP地址/ svn/AAAA/Customization/Project1Branch}.您可以在URL中设置名称,以便仅使用此名称创建文件夹.像{你的IP地址/ svn/AAAA/Customization/Project1Branch/MyProject1Branch}.
  • 按OK按钮.现在您可以看到登录...您的工作副本将存储在您的分支中.
  • 现在您可以退房...让您享受工作.:)


Pra*_*nth 5

以下是在 Windows 计算机中使用 TortoiseSVN 从主干创建分支的步骤。这显然需要安装TortoiseSVN客户端。

  1. 右键单击本地 Windows 计算机上更新的主干
  2. 选择乌龟SVN
  3. 单击分支/标签
  4. 选择 SVN 存储库中的“To”路径。请注意,目标 URL 会根据给定的路径和分支名称进行更新
  5. 不要在存储库浏览器中的分支内创建文件夹
  6. 添加分支路径。例如,分支机构/
  7. 添加有意义的日志消息供您参考
  8. 单击“确定”,这将在本地系统上创建新文件夹
  9. 检出在新文件夹中创建的分支