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

Fra*_*ank 80 svn branch svn-checkout

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

可我只是树干复制到一个分支,然后cd DIRsvn switch分支?

更新:谢谢你的答案,它的工作原理!总结步骤:

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

(注意点)

Luc*_*cas 52

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."
Run Code Online (Sandbox Code Playgroud)

  • 这是否意味着如果我在本地工作副本中进行了更改,我可以执行`svn copy <trunk-URL> <newBranch-URL>`将主干复制到svn服务器上的新分支,然后使用`svn switch`我的工作副本切换到新分支而不会丢失任何更改?或者交换机会杀死我未提交的修改过的文件? (3认同)
  • @Kasapo,是的,这是对的.并且还要注意你是否已经过了主干; 如果是这样,请按照我的说明将"@REV"添加到源URL,以便在切换到分支后,只有本地更改显示为差异. (3认同)
  • 谢谢你的回答.这是更好的解决方案,因为它维护修订历史记录. (2认同)

wie*_*rob 39

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

svn copy working_directory url_to_branch
Run Code Online (Sandbox Code Playgroud)


twk*_*twk 9

在我的SVN客户端:TortoiseSVN,它足以:

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

完了:)

这就像将本地版本复制到指定的存储库URL.