I just started working on some changes against trunk on an SVN repo, thinking they would be somewhat small. Now, I actually am beginning to realize that I probably should have just started a new branch instead. Rather than making a branch, and then moving each individual piece into it, is there any way to make a new branch and then commit the changes in my working copy to it?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
- make a new branch from the place where you started developing
- switch to the newly created branch
- commit the local changes (will commit to the new branch)
DO NOT MAKE ANY CHECKOUT
I do it with svn 1.6.5, it works without trouble but if you are really paranoid you could do following:
- create a patch from current working copy
- create a branch
- switch to it
- apply the patch
- commit
回答2:
What about creating a patch from your current work with svn diff
, then making a new branch, and applying the patch to the branch with patch -p0
?
回答3:
You can directly branch the state of your working copy to a URL with the svn copy
command. The created branch will include the local modifications.
Some gotchas:
- you may get errors stating something
like "File already exists". This is
caused by a mismatch of base revisions in
your working copy, more specifically between a file and its parent folder. One
possible solution
is to do a
svn update
before attempting to branch in this way. - after the
svn copy
, the working copy will be unchanged. It will still point to the trunk. It will also still show the local modifications in its status. You should first revert these modifications, whether you continue using the working copy as is or switch it to the new branch.