我需要澄清一下“svn switch”的行为。我正在使用SVN版本1.6.5。
通过阅读手册,我对行为的理解是将保留本地更改。所以我希望在svn switch
之后我的工作目录中仍然存在一个本地添加的文件。
但是,我和我的同事已经看到了一些新文件被交换机删除的情况。不幸的是,我们无法弄清楚如何重现这一点。
是否存在svn switch
删除本地添加文件的某些情况(功能或已知错误)?
答案 0 :(得分:11)
我认为当您有未提交的更改时切换是个坏主意。首先,将您的本地更改提交到svn cp . <branch URL>
的分支,然后切换。可能会出现非常棘手的情况。
想象一下,在您切换到的版本中,您在本地添加的文件已经存在,并且完全不同。或者,如果您添加了一个完整的文件目录,而这些目录无法与您要切换到的版本中的文件充分合并,该怎么办?你真的想要那场大冲突吗?
svn status
显示“S”状态,这意味着源树的不同部分具有不同的版本。当SVN在切换期间与本地更改混淆时,它恰好发生。它只是在开关中间被打破,然后颈部疼痛恢复。好几次发生在我身上。这就是为什么我总是确保在运行svn sw
之前我的工作副本没有本地修改。
答案 1 :(得分:7)
不应删除本地添加的文件或未版本控制的文件。边缘情况是交换机移动或移除目录的位置,但在这种情况下应该存在树冲突。
如果我认为可能存在树冲突,我经常做的就是保存当前更改的补丁。然后我知道我可以删除我的工作副本并在必要时重新开始,而不会丢失我的工作。
svn diff > ../somewhere/safe/save.diff
# Break stuff
patch -p0 < ../somewhere/safe/save.diff
答案 2 :(得分:0)
svn switch
的行为与svn update
非常相似:如果交换机的目标是相对于工作副本缺少某些文件的路径,那么这些文件将从工作副本。
就像伊万说的那样,你应该提交你的更改然后切换。