创建分支时,选择以下内容会有什么影响:
从存储库中创建副本:
- 从存储库中的HEAD修订版本
- 从存储库中的特定修订版本
- 从工作副本中
创建分支时,选择以下内容会有什么影响:
从存储库中创建副本:
根据创建分支的目的,通常会选择前两个选项中的一个。第三个选项可能较少使用。
如果要为特定目的进行一些探索性开发,或者要开始为特定客户端创建不同版本,则应从HEAD进行分支。如果需要对先前发布的软件版本进行补丁,则应从过去进行分支。
在 SVN 中,“创建分支”实际上只是复制存储库的某个子集。事实上,SVN 书中的章节branching says as much 就是这样描述的。
如果你的目录结构如下所示:
并且你的主干 URL 是:http://example.com/repos/project/trunk
,那么你应该:
从HEAD创建一个名为beta
的新分支,如下所示:
svn copy http://example.com/repos/project/trunk http://example.com/repos/project/branches/beta
这将立即在仓库中创建新分支,并不会对您的本地副本做任何事情。
从旧版修订号n创建一个名为ancient
的新分支,如下所示:
svn copy -r n http://example.com/repos/project/trunk http://example.com/repos/project/branches/ancient
这与1完全相同,但使用特定的修订号。
从您的本地复制品创建一个名为alpha
的分支,假设您的当前目录是trunk
:
cd ../
svn cp trunk branches/alpha
这将创建您请求的副本,但是在本地执行。根据SVN手册的说明,这是不鼓励的,因为它比在仓库服务器上制作副本要花费更长的时间(在那里复制操作基本上是免费的)。
当您键入svn help copy
时,还列出了以下警告:
警告:为了与Subversion的先前版本兼容, 使用两个工作副本路径(WC-> WC)执行的复制操作不会 联系存储库。因此,默认情况下,它们可能无法 将源的合并跟踪信息传播到目标。
代码库中的HEAD版本 SVN会选择最高编号的版本,也就是最后上传的版本。
指定代码库中的特定版本 您可以选择要获取的特定版本。
工作副本 当前在您本地工作区中的版本(未提交)。
HEAD 会使分支成为仓库最新提交版本的副本。
指定修订版会使分支成为仓库特定时间点的副本。
工作副本会基于您的工作副本的最新修订版创建一个分支,然后将您所有“正在进行中”的更改提交到此分支。
编辑: 选择工作副本的示例。
您使用主干的最新版本更新您的工作副本以开始进行一些小的更改。
几个小时后,您意识到这项工作比您预期的要大,您应该创建一个分支。
此时从工作副本创建分支实际上就像在一开始就这样做一样。