80

我从我的后备箱到本地 DIR 进行了结帐,并在那里进行了很多本地更改。现在我不想将它提交回主干,但我宁愿从这个本地版本创建一个分支。那可能吗?

我可以将主干复制到分支,然后再复制cd DIRsvn switch分支吗?

更新:感谢您的回答,它有效!总结一下步骤:

  • cd DIR
  • svn copy . new-branch-URL
  • svn switch new-branch-URL .

(注意点)

4

4 回答 4

52

SVN Book ( http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.using.create ) 不建议从本地工作副本创建分支。

虽然也可以通过svn copy在工作副本中复制目录来创建分支,但不推荐使用这种技术。事实上,它可能很慢!在客户端复制目录是一种线性时间操作,因为它实际上必须复制本地磁盘上该工作副本目录中的每个文件和子目录。

相反,请先创建分支,然后使用svn switch命令提交更改。如果您的工作副本与主干明显过时,则将“@REV”附加到源 URL,其中“REV”是您报告的工作副本的修订版本svn info

然而,在服务器上复制目录是一个固定时间的操作,并且是大多数人创建分支的方式。

$ svn copy http://svn.example.com/repos/calc/trunk \
           http://svn.example.com/repos/calc/branches/my-calc-branch \
      -m "Creating a private branch of /calc/trunk."
于 2011-09-20T02:15:55.290 回答
39

根据它的命令行帮助 svn copy 可以从一个目录复制到一个存储库的 URL。所以你应该能够将你的工作副本复制到分支,例如:

svn copy working_directory url_to_branch
于 2009-08-20T21:09:20.883 回答
9

在我的 SVN 客户端:TortoiseSVN 中足以:

  • 右键单击我要分支的顶级目录
  • 在“To URL”中选择存储库中的分支目录
  • 在“在存储库中创建副本从:”框架中选择“工作副本”

完毕 :)

这就像将本地版本复制到指定的存储库 url。

于 2009-08-20T21:13:10.877 回答
1

是的,您可以通过SVN 命令行以及tortoiseSVN来执行此操作。

您必须将您的 SVN 工作副本指定为 src,并将您的新分支指定为

svn copy <file/path/to/working/copy> <URL/TO/REPOSITORY/BRANCH>

命令。

在 TortoiseSVN 中,只需指向您的工作副本,从上下文菜单中选择“分支/标签”,然后在“在存储库中创建副本来自:”部分中选择“工作副本”

请注意,以这种方式创建标签不是一个好主意(出于可追溯性的原因),但对于分支来说,这完全没问题。

于 2009-08-21T00:22:27.493 回答