Subversion: Can I checkout, modify, and then make it a branch?

人走茶凉 提交于 2020-01-30 14:03:50

问题


I did a checkout from my trunk to a local DIR and made lots of local changes there. Now I don't want to commit it back to the trunk, but I'd rather make a branch from this local version. Is that possible?

Can I just copy the trunk to a branch, and then cd DIR and svn switch to the branch?

UPDATE: Thanks for the answers, it worked! To summarize the steps:

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

(note the dots)


回答1:


According to its command line help svn copy can copy from a directory to a repository URL. So you should be able to copy your working copy to the branch, e.g.:

svn copy working_directory url_to_branch



回答2:


The SVN Book (http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.using.create) doesn't recommend creating a branch from the local working copy.

While it's also possible to create a branch by using svn copy to duplicate a directory within the working copy, this technique isn't recommended. It can be quite slow, in fact! Copying a directory on the client side is a linear-time operation, in that it actually has to duplicate every file and subdirectory within that working copy directory on the local disk.

Instead, create the branch first and then use the svn switch command so you can commit your changes. If your working copy is significantly out of date with the trunk then append "@REV" to the source URL where "REV" is the revision of your working copy reported by svn info.

Copying a directory on the server, however, is a constant-time operation, and it's the way most people create branches.

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



回答3:


In my SVN client: TortoiseSVN it is enough to:

  • right click on the top directory I want to branch
  • in "To URL" select the branch directory in your repository
  • in the frame "Create copy in the repository from:" select "Working copy"

done :)

It is just like copying local version to specified repository url.




回答4:


Yes, you can do this by SVN commandline as well as tortoiseSVN.

You have to specify your SVN workingcopy as src and your new branch as destination of the

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

command.

In TortoiseSVN just point into your working copy, choose "Branch/tag" from contextmenu and choose "Working copy" in the section "Create copy in the repository from:"

Note that it is not a good idea (for traceability reasons )to create tags in such a way, but for branches it is perfectly fine.



来源:https://stackoverflow.com/questions/1308791/subversion-can-i-checkout-modify-and-then-make-it-a-branch

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!