我从我的行李箱到当地的DIR结账,并在那里进行了大量的本地更改。现在我不想将它提交回主干,但我宁愿从这个本地版本创建一个分支。这可能吗?
我可以将主干复制到分支机构,然后将cd DIR
和svn switch
复制到分支机构吗?
更新:感谢您的回答,它有效!总结步骤:
cd DIR
svn copy . new-branch-URL
svn switch new-branch-URL .
(注意点)
答案 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就足够了:
完成:))
就像将本地版本复制到指定的存储库URL一样。
答案 3 :(得分:1)
是的,您可以通过 SVN命令行以及 tortoiseSVN 来执行此操作。
您必须将SVN workingcopy指定为src,将新分支指定为
的目标svn copy <file/path/to/working/copy> <URL/TO/REPOSITORY/BRANCH>
命令。
在TortoiseSVN中,只需指向您的工作副本,从上下文菜单中选择“分支/标记”,然后在“从以下位置创建存储库中的副本”部分中选择“工作副本”。
请注意,以这种方式创建标记并不是一个好主意(出于可追溯性原因),但对于分支来说,它完全没问题。