有没有办法阻止文件被提交到SVN存储库

时间:2009-01-06 12:26:24

标签: svn version-control

今天我遇到了一个问题,有人不小心将proj.user文件提交到SVN存储库。当我来更新时,它显然引起了问题。

让我想知道是否有任何方法可以阻止某些文件扩展名提交到存储库。

我确实知道有一个忽略列表,但据我所知,这仍然依赖于将文件添加到忽略列表的人。理想情况下,我想集中控制它,以便存储库而不是人控制。

这可能吗?

8 个答案:

答案 0 :(得分:17)

是的,一般来说有两种方法。创建提交挂钩(可能不是您想要做的),或者更轻松地将svn:ignore属性添加到您的目录中。由于属性与项目一起维护,这将影响每个人。例如,要忽略*.user个文件,您可以将其添加到它们出现的目录中:

svn propset svn:ignore '*.user' .

然后像往常一样提交更改。从现在开始,该目录中的* .user文件将不再参与svn命令,例如stat,update,commit等。但是,您必须将该属性添加到需要ignore字段的每个目录中。它不会自动以递归方式在您的项目树上执行操作。如果出于任何原因,您确实想要更新被忽略的文件,则可以将--no-ignores标志传递给该命令。

答案 1 :(得分:3)

您可以添加subversion预提交挂钩以防止人们提交它们。这具有服务器端的优势,而不是每个客户端设置。

答案 2 :(得分:2)

关于这个:

  

这实际上会阻止它存在吗?   显式$ svn add'ed? - sirlancelot   09年1月6日18:14

     

不,如果你专门添加它,它   将被添加,但对它的更新将   被忽略了。 - 杰森可可2009年1月6日在   20:08

我相信你不能用svn玩这个:忽略道具。根据svnbook 1.5手册:

  

“Subversion对可忽略的支持   文件模式只扩展到   一次性添加无版本的过程   文件和目录到版本   控制。一旦物体在   Subversion的控制,忽略   模式机制不再适用于   它。换句话说,不要指望   Subversion避免提交更改   你已经完成了一个版本化的文件   因为该文件的名称与   忽略模式 - Subversion始终   注意到它的所有版本化对象。“

答案 3 :(得分:2)

我必须使用

svn propset svn:ignore '*.user' .

为了使用上面接受的答案。

答案 4 :(得分:1)

您想在服务器端添加一个忽略列表吗?我认为这不是直接可能的,但你可以分析预提交钩子中的文件(参见:http://svnbook.red-bean.com/en/1.1/ch05s02.html#svn-ch-5-sect-2.1)并在名称/模式不正确的情况下完全拒绝提交?

答案 5 :(得分:0)

在SVN中,您手动将文件添加到存储库。因此,拥有文件扩展名阻止列表是没有意义的。您可以使用svn ignore忽略特定文件,但同样,您需要手动添加和删除存储库中的文件。

另见How do you remove a file from being version controlled without deleting the file in subversion?

答案 6 :(得分:0)

查看svn:ignore属性。

答案 7 :(得分:0)

除了设置ignore property之外,您还可以使用“global-ignore”运行时配置选项全局执行此操作。请点击链接获取更多信息。我认为全局忽略功能正是您可能正在寻找的。