我在两个分支之间完成了一个svn合并 - 没有签入 - 现在我想“取消合并”我工作副本中的一些文件。如下所示:
svn co svn://myserver/repo/branches/foo@1000 foo
cd foo
svn merge svn://myserver/repo/branches/foo@1000 \
svn://myserver/repo/branches/bar@1000
(注意:我想使用svn merge
,而不仅仅是复制bar
的工作副本中的文件,因为(1)存在一些合法的合并,即{{}上的无关更改1}}和foo
指向相同的文件,(2)某些文件已在bar
中删除,而我在办理登机手续时也希望将其从bar
删除。)
我想检查大多数合并文件,但其中一些,我想从foo
分支中删除更改并保留现有文件bar
分支。所以我试试:
foo
这没有任何作用。 svn revert baz/qux.quux
仍有来自qux.quux
分支的更改。我试试bar
;它是空白的。我尝试从svn status
分支的prestine副本进行复制:文件现在具有正确的内容,但foo
现在显示svn diff
差异。再次bar < foo
:现在我们已经恢复了svn revert
次。我们试试bar
:
svn info
那我如何回到Path: baz/qux.quux
Name: qux.quux
Working copy root path: /home/mydir/foo
URL: svn://myserver/repo/branches/foo/baz/qux.quux
Repository root: svn://myserver/repo
Repository UUID: [whatever]
Revision: 1000
Node Kind: file
Schedule: normal
Last Changed Author: [author of last change on bar, not foo]
Last Changed Rev: [rev of last change on bar, not foo]
Last Changed Date: [date of last change on bar, not foo]
的{{1}}版本?如何在工作副本中清除“坏”状态信息?
我觉得我从根本上误解了foo
。
答案 0 :(得分:0)
看起来你想要通过挑选来合并,这是一个hack at best, in SVN。您需要成为svn merge专家来解决这个问题。其他版本控制系统(hg,darcs,bzr)支持这种开发方法better
,但它们有自己的瑕疵。所以,选择你的毒药并习惯它。
答案 1 :(得分:0)
我的测试结果(合并磁头和恢复单个文件)显示预期结果(您可以在我的测试用例中重新检查它 - 存储库已打开)
步骤和操作
>svn co http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/Leichtbau-Deutsch/
A Leichtbau-Deutsch\Hello.en.txt
A Leichtbau-Deutsch\Hello.fr.txt
A Leichtbau-Deutsch\Hello.de.txt
U Leichtbau-Deutsch
Checked out revision 37.
>cd Leichtbau-Deutsch
>svn merge http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/branche-francaise/
--- Merging r26 through r37 into '.':
U Hello.fr.txt
Conflict discovered in 'Z:/Leichtbau-Deutsch/Hello.de.txt'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options: tc
U Hello.de.txt
--- Recording mergeinfo for merge of r26 through r37 into '.':
U .
>svn status
M .
M Hello.de.txt
M Hello.fr.txt
>svn revert Hello.fr.txt
Reverted 'Hello.fr.txt'
>svn st
M .
M Hello.de.txt
预期结果
PS:如果你愿意的话,我可以用PEG修订重复这个测试。但是 - 我更喜欢使用来自相应分支的真实修订和(与merge-revert无关)我必须执行(如果内存很好)svn up
(并盲目合并)到分支HEAD之前能够提交合并集,因为SVN 中的svn co svn://myserver/repo/branches/foo@1000
结帐非HEAD修订版和修订历史记录必须是线性的