如何在SVN中创build分支?
如何在SVN中创build分支?
在Subversion中分支是由一个非常非常轻而高效的复制设施来促进的。
分支和标记实际上是相同的。 只需使用svn copy
命令将存储库中的整个文件夹复制到存储库中的其他位置即可。
基本上这意味着按照惯例,复制文件夹意味着什么 – 无论是备份,标签,分支还是重击。 根据你想如何考虑事情(通常取决于你过去使用的SCM工具),你需要在你的仓库中build立一个文件夹结构来支持你的风格。
常见的样式是在仓库顶部有一堆名为tags
, branches
, trunk
等的文件夹 – 它允许您将整个trunk
(或子集)复制到tags
和/或branches
文件夹中。 如果您有多个项目,则可能需要在每个项目下复制这种结构:
要习惯这个概念可能需要一段时间 – 但是它很有效 – 只要确保你(和你的团队)清楚你将要使用的约定。 有一个好的命名约定 – 告诉你为什么分支/标签是制作的,是否仍然合适 – 考虑如何归档过时的分支。
Subversion使得使用svn copy命令创build一个新的分支变得容易(有些人觉得太简单了)。
$ 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"
svn cp /trunk/ /branch/NEW_Branch
如果您在中继中有一些本地更改,请使用Rsync
同步更改
rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
如果您的回购是通过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"
通常你会把它复制到svn + ssh://host.example.com/repos/project/branches/mybranch,这样你就可以在版本库中保留好几个分支,但是你的语法是有效的。
以下是关于如何设置存储库布局的一些build议。
如果你甚至打算合并你的分支,我强烈build议你看看这个:
Svnmerge.py
我听说Subversion 1.5构build了更多的合并跟踪function,我没有这方面的经验。 我的项目是在1.4.x和svnmerge.py是一个救星!
假设你想从一个中继名称(如“TEST”)创build一个分支,然后使用:
svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
新的SVN用户的重要提示; 这可能会有助于快速获取正确的URL。
运行svn info
来显示有关当前签出分支的有用信息。
该URL应该(如果你在根文件夹中运行svn)给你你需要复制的URL。
还要切换到新创build的分支,请使用svn switch
命令:
svn switch http://my.repo.url/myrepo/branches/newBranchName
- 在当前项目之外创build一个新的文件夹。 你可以给它任何名字。 (例如:您有一个名为“Customization”的项目的结帐,并且有许多项目,比如“Project1”,“Project2”….并且您想创build一个“Project1”的分支,所以首先打开“定制“,右键单击并创build一个新文件夹,并命名为”Project1Branch“)。
- 右键单击“Myproject1”…. TortoiseSVN – >分支/标签。
- select工作副本。
- 打开浏览器….恰到好处的“到URL”。
- select自定义…..点击右键,然后添加文件夹。 并通过您创build的文件夹。 这里是“Project1Branch”。 现在点击确定button添加。
- 结帐这个新的banch。
- 再次去你的项目,你想创build的分支。 右键单击TorotoiseSVN – >分支/标签。 然后select工作副本。 您可以将url作为您的分行名称。 像{你的IP地址/ svn / AAAA / Customization / Project1Branch}。 您可以在url中设置名称,以便仅创build具有此名称的文件夹。 像{你的IP地址/ svn / AAAA / Customization / Project1Branch / MyProject1Branch}。
- 按下OKbutton。 现在您可以看到日志了…您的工作副本将存储在您的分支中。
- 现在你可以退房了,让你享受你的工作。 🙂