在具有SVN的多开发人员环境中工作我有时会遇到开发人员(偶然)通过复制/粘贴文件替换文件的问题。这有时会被忽视,因为差异只能在subclipse的同步视图中提交之前起作用。
在SVN中,这最终是一个带有'(file)replace'(而不是modify)的提交。 这种替换使得更难以看到文件的历史记录,因为SVN认为它是一个新文件而不是修改过的文件。
我想阻止开发人员能够提交替换。或者至少让他们非常清楚他们确实在努力做到这一点。
我可以将问题分成多个层次,具体取决于可能的情况:
非常感谢。
答案 0 :(得分:0)
他们使用的是Subclipse的更新版本吗?造成这种情况的大多数原因都是由Eclipse及其驱动Team API的方式引起的。在某些情况下,当您复制并粘贴它时,会告诉Team API您删除了该文件,这会导致Subclipse运行svn delete。然后新文件是svn add,相当于替换。
较新版本的Subclipse检测到这种情况,并做了一些步骤,将其转变为修改。 Subclipse的当前版本是1.10.1,该版本或最新的1.8.x版本应该包含这些更改。
您可以在服务器上编写预提交挂钩,以查看提交中的更改,如果包含Replace,则拒绝提交。看一下Subversion提供的svnperms.py示例钩子脚本。如果它还没有这样做,它会告诉你如何做到这一点。
无法阻止它发生,但较新的Subclipse版本可能会减少它的普及。
装饰器可能看起来不同,SVN属性会显示状态被替换,但没有什么能让用户看到这些东西。 #2将是更好的选择。