1

在使用 SVN 的多开发人员环境中工作时,我有时会遇到开发人员(意外)通过文件的副本/粘贴替换文件的问题。这有时会被忽视,因为差异只是在 subclipse 的同步视图中的提交之前起作用。

在 SVN 中,这最终作为带有“(文件)替换”(而不是修改)的提交。这种替换使查看文件的历史变得更加困难,因为 SVN 认为它是一个新文件而不是修改后的文件。

我想防止开发人员能够提交替换。或者至少让他们非常清楚他们实际上正在尝试这样做。

我可以根据可能的情况将我的问题分成多个层次:

  1. 是否有一种方法可以防止在没有特殊访问权限的情况下允许其中包含“替换”的提交(apache SVN 中的服务器端)?
  2. 是否有一种方法可以防止内部带有“替换”的提交?(在子剪辑内)
  3. (如果 1 和 2 不可能)有没有办法让开发人员知道他将在他的提交中做一个“替换”?(在子剪辑内)

非常感谢。

4

1 回答 1

0

他们使用的是 Subclipse 的更新版本吗?造成这种情况的大部分原因是由 Eclipse 及其驱动 Team API 的方式引起的。在某些情况下,当您复制和粘贴时,它会告诉 Team API 您删除了该文件,这会导致 Subclipse 运行 svn delete。然后新文件是 svn add,相当于一个替换。

较新版本的 Subclipse 会检测到这种情况,并跳一些小舞步将其转回修改状态。Subclipse 的当前版本是 1.10.1,该版本或最新的 1.8.x 版本应该有这些变化。

  1. 您可以在服务器上编写一个预提交挂钩来查看提交中的更改,如果它包含替换,则拒绝提交。看一下 Subversion 提供的 svnperms.py 示例钩子脚本。如果它还没有这样做,它会告诉你如何去做。

  2. 无法阻止它发生,但更新的 Subclipse 版本可能会使其不那么常见。

  3. 装饰器可能看起来不同,并且 SVN 属性会显示已替换状态,但没有什么能让用户看到这些东西。#2 将是更好的选择。

于 2013-07-26T19:10:16.733 回答