问题 为什么“本地删除,更新时传入删除”目录存在冲突?


这更像是一个假设的问题,但我一直想知道为什么这个案子被认为是冲突。如果我在本地删除了一个已经从存储库中删除的目录,为什么这不会像你期望的那样解决?我不知道哪个角落的案例会使冲突地位成为必要?


12419
2017-07-01 15:48


起源

因为颠覆是一种愚蠢的版本控制系统。 - Nick Hristov


答案:


我开始深入研究这个问题,我认为这可能是因为SVN并不完全确定是否可以 delete 是一个简单的删除,或实际上是一个 move (一个 copy,和 delete)。来自 文件, 它指出:

因为Subversion中的移动被实现为复制操作,然后是删除操作,并且这两个操作在更新期间不能容易地彼此相关,所以所有Subversion都可以警告您关于本地修改文件的传入删除操作。此删除操作可以是移动的一部分,也可以是真正的删除操作。

所以听起来很安全,SVN警告你应该更新。当然,它可以忽略删除“冲突”,只需复制新移动的文件夹,但我认为某些元数据可能会在本地丢失。

一个可能的解决方法是在本地还原您的更改并让传入更新处理删除。


9
2017-07-01 16:08



那么你怎么解决它? - homemade-jam
@ homemade-jam“最简单”的方法就是恢复你的更改并让传入的删除同一个目录。 - Igor
好的。 imho svn支持移动文件是非常残酷的。 - homemade-jam
对于未来的读者:我在一个同事移动的文件上出现了冲突,后来我从旧位置删除了。所以我有这个,尽管文件既不在我的工作副本中,也不在那个位置的回购中。尽管如此,Sneakys的建议只是 svn revert 尽管这两个操作都没有对工作副本或repo进行任何可见的更改,但该文件然后更新仍然解决了它。 - DeVadder


当您要求SVN在无法执行更改的目标文件或文件夹上启用更改(使用合并或更新)时,会出现树冲突。在您的情况下,您要求SVN启用删除本地副本中不存在的文件夹。为什么有必要?这对你来说更像一个警告,对我来说当一个人试图移动一个目录时另一个试图在另一个分支中删除它时,它会很有用。树冲突就像你描述的那样,而且它是真实的。这两个人必须通过决定如何处理该文件夹来解决它。


2
2017-07-02 14:49