我对我的代码做了一些更改,之后我认为代码不适合主干,但我应该尝试一下(使用代码),稍后如果我成功了,我应该继续行李箱。
所以我需要创建一个分支——我在分支中创建了新目录,将svn copy
主干复制到新创建的分支,然后转到我的源代码目录并执行svn开关
.
此时我不明白发生了什么。当我应用 svn status 时,svn 以类似的方式遍历整个目录,对大多数文件放置 A
字母,但对于目录 C
,总之我可以阅读:
Updated to revision 1458.
Summary of conflicts:
Tree conflicts: 6
但是当我检查一些文件时,我发现这些文件(幸运的是)并没有真正从 svn 存储库更新(再一次,在上次提交之后,我对代码进行了更改,然后然后决定分支)。
当我发出 svn status
时,我现在可以看到许多条目信息,例如此目录:
A + C testsuite
> local edit, incoming delete upon switch
我所做的步骤是我在SO上读到的,并且没有提到这样的问题。那么我现在如何将更改提交到分支(当然我不想删除我的更改)。
更新:我找到了关于SO的部分答案,您可以执行:
svn resolve --accept working ./*
声明本地版本文件为OK。看: https://stackoverflow.com/a/2207119/210342
但这还没有结束,现在我遇到了这个错误:
svn: Did not expect '/media/wdisk/Projekty/MyProject
/MyProject.UnitTests/MetaData' to be a working copy root
更新 2:我没有按照我的意愿解决这个问题。相反,我复制了整个目录(本地目录),删除了所有 .snv 目录,从分支中 checkout 了文件,复制了所有本地文件,然后提交了。这被 SVN 视为常规更改,因此不会引发冲突。
最佳答案
由于您的工作副本包含本地修改,您希望在单独的分支(功能分支 - 分支启动:))中测试它们后提交这些修改,因此在运行 svn switch 命令时,您将得到响应类似于您运行 svn update 时得到的响应,因为 svn switch 还会比较它为您提供的响应的工作副本,就像在 C 中进行的一些更改一样code>(冲突状态)和一些新添加的(A
)。
相同的场景描述如下:
http://svnbook.red-bean.com/en/1.6/svn.branchmerge.switchwc.html
Have you ever found yourself making some complex edits (in your /trunk working copy) and suddenly realized, Hey, these changes ought to be in their own branch? A great technique to do this can be summarized in two steps:
$ svn copy http://svn.example.com/repos/calc/trunk \
http://svn.example.com/repos/calc/branches/newbranch \
-m "Create branch 'newbranch'."
Committed revision 353.
$ svn switch ^/calc/branches/newbranch
At revision 353.
The svn switch command, like svn update, preserves your local edits. At this point, your working copy is now a reflection of the newly created branch, and your next svn commit invocation will send your changes there.
关于svn - svn 切换后发生了什么以及如何提交本地更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22603208/