Svn 为什么是;本地删除,更新时传入删除";目录冲突?

Svn 为什么是;本地删除,更新时传入删除";目录冲突?,svn,tree-conflict,Svn,Tree Conflict,这更像是一个假设性的问题,但我一直想知道为什么这个案例被视为冲突。如果我在本地删除了一个已经从存储库中删除的目录,为什么这不能像您所期望的那样解决呢?我没有想到哪种情况会使冲突状态变得必要?我开始深入研究这一点,我认为这可能是因为SVN不完全确定delete是一个简单的删除,还是实际上是一个move(一个copy,一个delete)。根据该报告,它指出: 由于在Subversion中的移动被实现为一个复制操作,然后是一个删除操作,并且这两个操作在更新过程中不能很容易地相互关联,因此Subvers

这更像是一个假设性的问题,但我一直想知道为什么这个案例被视为冲突。如果我在本地删除了一个已经从存储库中删除的目录,为什么这不能像您所期望的那样解决呢?我没有想到哪种情况会使冲突状态变得必要?

我开始深入研究这一点,我认为这可能是因为SVN不完全确定
delete
是一个简单的删除,还是实际上是一个
move
(一个
copy
,一个
delete
)。根据该报告,它指出:

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

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


一种可能的修复方法是在本地还原更改,并让传入的更新处理删除操作。

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

那么如何修复它呢?@自制jam“最简单”的方法就是恢复您的更改,让传入的文件夹删除同一个目录。好的。对于未来的读者来说,svn对移动文件的支持太糟糕了:我的一个同事移动了一个文件,后来我从原来的位置删除了这个文件,这引起了冲突。因此,尽管文件既不在我的工作副本中,也不在那个位置的回购协议中,我还是拥有了这个文件。尽管如此,斯克里特的建议,即只恢复文件,然后更新,仍然解决了这个问题,尽管这两个操作都没有对工作副本或repo进行任何可见的更改。因为subversion是一个愚蠢的版本控制系统。