2008-08-05 98 views

回答

312

在Subversion中的分支是由一个非常非常轻巧高效的复制工具来实现的。

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

基本上这意味着按照惯例,复制文件夹意味着什么 - 意味着它是备份,标记,分支还是whater。根据你想如何考虑事情(通常取决于你过去使用过哪个SCM工具),你需要在你的仓库中设置一个文件夹结构来支持你的风格。

常见的款式都在你的仓库顶部称为tagsbranchestrunk等方面有一大堆的文件夹 - 这允许您在整个trunk(或子集)复制到tags和/或branches文件夹。如果您有多个项目,您可能需要在每个项目下复制这种结构:

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

562

Subversion使得使用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" 
+18

接下来使用`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`(如果你想在分开的目录中有新的分支)开始处理新创建的br ANCH。 – 2012-10-14 18:45:48

+3

***注:***在某些情况下,您需要使用**`--parents` **选项和`svn copy`! – 2012-10-15 05:54:57

+0

由于某种原因我使用了这个cmd,但它没有工作,但是当我将svn + ssh改为https时,它确实有效。我做错了什么吗? svn + ssh的含义是什么?谢谢! – 2013-08-22 07:31:16

13

通常你把它复制到SVN + SSH://host.example.com/repos/project/branches/mybranch,这样就可以保持几个分支在仓库中,但你的语法是有效的。

以下是关于how to set up your repository layout的一些建议。

10

如果您即使在合并你的分支计划,我强烈建议你看看这个:

Svnmerge.py

我听到Subversion 1.5的建立更多的合并跟踪,我有没有经验。我的项目在1.4.x上,而svnmerge.py是一款救星!

11

假设你想创建一个中继名称的分支(如“TEST”) 然后使用:

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST 
23
svn cp /trunk/ /branch/NEW_Branch 

如果你有一些树干上的局部变化,然后使用Rsync同步变化

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch 
4
  • 在当前项目之外创建一个新文件夹。你可以给它任何名字。 (例如:你有一个名为“Customization”的项目结账,并且它有许多项目,比如“Project1”,“Project2”....并且你想创建一个“Project1”的分支,所以首先打开“自定义“,右键单击并创建一个新文件夹并命名为”Project1Branch“)。
  • 右键单击“Myproject1”.... TortoiseSVN - > Branch/Tag。
  • 选择工作副本。
  • 打开浏览器....恰到好处的“到URL”。
  • 选择自定义.....右击然后添加文件夹。并通过您创建的文件夹。这里是“Project1Branch”。现在点击OK按钮添加。
  • 检查这个新banch。
  • 再次转到您的项目要创建的分支。右击TorotoiseSVN - >分支/标签。然后选择工作副本。并且您可以将URL作为分支名称。像{你的IP地址/ svn/AAAA/Customization/Project1Branch}。并且您可以在URL中设置名称,以便仅创建具有此名称的文件夹。 像{你的IP地址/ svn/AAAA/Customization/Project1Branch/MyProject1Branch}。
  • 按下OK按钮。现在您可以看到日志了......您的工作副本将存储在您的分支中。
  • 现在,您可以退房...并让您享受您的工作。 :)
9

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

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

URL应该(如果你在根文件夹中运行svn)给你你需要复制的URL。

也切换到新创建的分支,使用svn switch命令:

svn switch http://my.repo.url/myrepo/branches/newBranchName 
20

如果你是回购协议通过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"