我在我的代码中进行了一些更改,在之后我认为代码不适合中继,但我应该尝试一下(使用代码),稍后如果我成功,我应该去中继线。
所以我需要创建一个分支 - 我在分支中创建了新目录,我将主干svn copy
复制到新创建的分支,然后我转到我的源代码目录并执行svn switch
此时我不明白发生了什么。当我应用svn status
时,svn以类似的方式遍历整个目录,放置大多数文件A
但是对于目录C
,总结我可以读到:
Updated to revision 1458.
Summary of conflicts:
Tree conflicts: 6
但是当我检查一些文件时,我看到文件(幸运的是)没有真正从svn存储库更新(再一次,在最后一次提交后我对代码进行了更改,然后然后决定分支)。 / p>
当我发布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
目录,我检查了分支中的文件,复制了所有本地文件,然后我提交了。这被SVN视为常规变更,因此不会引发冲突。
答案 0 :(得分:2)
由于您的工作复制包含您在单独的分支(功能分支 - 分支startegy :)中测试后要提交的本地修改,因此在运行svn switch
命令时,您得到类似于当你运行svn update
时,你会得到,因为svn switch
也会比较它给你的响应的工作副本,就像C
中的一些变化(冲突状态)和一些新添加的那样({{1} }})。
相同的场景描述于:
http://svnbook.red-bean.com/en/1.6/svn.branchmerge.switchwc.html
你有没有发现自己做了一些复杂的编辑(在你的/ trunk工作副本中)并突然意识到,嘿,这些变化应该在他们自己的分支中?一个伟大的 这样做的技术可以分为两个步骤:
A
$ svn copy http://svn.example.com/repos/calc/trunk \
http://svn.example.com/repos/calc/branches/newbranch \
承诺修订353。
-m "Create branch 'newbranch'."
修订版353。
svn switch命令与svn update一样,保留了本地编辑。此时,您的工作副本现在是新创建的分支的反映,您的下一个svn提交调用将在那里发送您的更改。
答案 1 :(得分:0)
你表现得很糟糕(并且,BTW,描述前提条件)。
“我的代码中做了一些更改”目前尚不清楚存储库和WC的状态描述
如果“在提交到trunk后我决定代码不适合trunk”,你有(正确的方法):
svn copy URL/OF/TRUNK URL/OF/NEW/BRANCH -m "Branching latest state"
svn merge -c -REVNO . && svn commit -m "Undoing latest change"
svn switch URL/OF/NEW/BRANCH
如果“在本地uncommited到trunk更改后我决定代码不适合trunk”你有(正确方法):
svn switch URL/OF/NEW/BRANCH
svn co -m "Starting point of featire"