Subversion:我可以签出,修改,然后将其作为分支吗?

时间:2009-08-20 21:02:41

标签: svn branch svn-checkout

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

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

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

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

(注意点)

4 个答案:

答案 0 :(得分:50)

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."

答案 1 :(得分:39)

根据其命令行帮助svn copy可以从目录复制到存储库URL。因此,您应该能够将工作副本复制到分支机构,例如:

svn copy working_directory url_to_branch

答案 2 :(得分:9)

在我的SVN客户端:TortoiseSVN就足够了:

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

完成:))

就像将本地版本复制到指定的存储库URL一样。

答案 3 :(得分:1)

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

您必须将SVN workingcopy指定为src,将新分支指定为

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

命令。

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

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