【问题标题】:Does in svn branch is a simple copy?在 svn 分支中是否是一个简单的副本?
【发布时间】:2026-02-18 21:40:01
【问题描述】:

为了更好地理解: 在 svn 分支中是否是其他分支(主干)的副本? 我的意思是 svn 不跟踪它们之间的任何关系? 所以我可以创建副本名称作为分支 myproject-x.y.z,提交它,那将是分支? 所以我可以使用合并之类的操作? 谢谢。

【问题讨论】:

  • 当你说“所以我可以创建副本名称作为分支 myproject-x.y.z,提交它,那将是分支?”您能否包含一个命令行示例来说明“将副本名称创建为分支 myproject-x.y.z”的含义?
  • 感谢您的提问。我的意思是只复制项目文件,而不是 .svn 文件。

标签: svn merge copy branch


【解决方案1】:

是的,您必须使用 svn copy 命令在存储库中制作项目树的副本。您的源代码副本将被创建。您可以为您希望的分支选择任何名称。

现在你的副本,你可以签出代码。

$ svn checkout http://svn.example.com/repos/calc/branches/my-calc-branch
A  my-calc-branch/Makefile
A  my-calc-branch/integer.c
A  my-calc-branch/button.c
Checked out revision 341.
$ 

Subversion 知道您的分支的历史,并且知道它何时从主干中分离出来。要执行同步合并,首先要确保分支的工作副本是“干净的”——它没有 svn status 报告的本地修改。然后简单地运行:

$ pwd
/home/user/my-calc-branch
$ svn merge ^/calc/trunk
--- Merging r345 through r356 into '.':
U   button.c
U   integer.c
--- Recording mergeinfo for merge of r345 through r356 into '.':
U   .
$ 

使用 svn status 检查主副本中的代码更改。

$ svn status
M      .
M  button.c
M  integer.c 
$ 

推荐我最喜欢的http://svnbook.red-bean.com/

【讨论】:

    【解决方案2】:

    是的,如果您svn copy source_url/trunk source_url/myproject-x.y.z -m "Insert comment here",您已经创建了分支myproject-x.y.z。两者之间没有明确跟踪的联系。在myproject-x.y.z 上进行更多提交后,您可以将其合并到trunk,但您也可以选择将其合并到假设的branch_b

    您必须使用svn copy 命令而不是 dos copy 或 Unix/Linux/OSX cp

    【讨论】:

      最近更新 更多