是否有任何方法阻止提交到SVN存储库的文件

是否有任何方法阻止提交到SVN存储库的文件,svn,version-control,Svn,Version Control,今天我遇到一个问题,有人意外地将proj.user文件提交到SVN存储库。当我开始更新时,它显然引起了一些问题 这让我想知道是否有任何方法可以阻止某些文件扩展名提交到存储库 我知道有一个忽略列表,但据我所知,这仍然依赖于该人员添加文件以忽略列表。理想情况下,我希望集中控制这一点,以便由存储库而不是人员控制 这可能吗?在SVN中,您可以手动将文件添加到存储库中。因此,使用文件扩展名阻止列表是没有意义的。您可以使用svn ignore忽略特定文件,但同样,您需要手动从存储库中添加和删除文件 另请参见

今天我遇到一个问题,有人意外地将proj.user文件提交到SVN存储库。当我开始更新时,它显然引起了一些问题

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

我知道有一个忽略列表,但据我所知,这仍然依赖于该人员添加文件以忽略列表。理想情况下,我希望集中控制这一点,以便由存储库而不是人员控制


这可能吗?

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


另请参见

是的,通常有两种方法。创建提交钩子(这可能不是您想要做的),或者更容易地将svn:ignore属性添加到您的目录中。由于属性随项目一起维护,这将影响到每个人。例如,要忽略
*.user
文件,您可以将其添加到显示这些文件的目录中:

svn propset svn:ignore '*.user' .

然后像往常一样提交您的更改。从现在起,该目录中的*.user文件将不再参与svn命令,如stat、update、commit等。但是,您必须将属性添加到每个需要忽略字段的目录中。它不会自动递归地作用于项目树。如果出于任何原因,您确实希望更新被忽略的文件,您将向命令传递
--no ignores
标志。

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

请查看属性。

是否要在服务器端添加忽略列表?我认为这不可能直接实现,但您可以分析预提交挂钩(请参阅:)中的文件,并在名称/模式不正确时完全拒绝提交?

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

关于这一点:


这真的能阻止它被发现吗 明确添加$svn?-西兰斯洛特 2009年1月6日18:14


不,如果你特别添加它,它 将添加,但将添加对其的更新 被忽略Jason Coco 2009年1月6日在 20:08

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

“颠覆对可忽略的 文件模式仅扩展到 一次性添加未版本的进程 文件和目录到版本 控件。一旦对象处于 颠覆的控制,忽略 模式机制不再适用于 它。换句话说,不要期待 Subversion以避免提交更改 您已对版本化文件进行了简单的修改 因为该文件的名称与 总是忽略模式颠覆 注意其所有版本对象。”

我不得不使用

svn propset svn:ignore '*.user' .

为了使用上述公认的答案

svn实际上没有忽略命令。。。所以svn ignore只会导致一个错误。svn:ignore不是命令,而是属性:Subversion属性也与项目一起管理,因此它们有被修改和在服务器上维护的好处:)此外,它们不需要编码。它们需要,但是,当您有很多项目/目录时,设置它们也更麻烦。。摇摆和迂回等等:)如果你是一个有经验的Subversion管理员,我绝对同意,但是如果你在这里问这个问题,我认为将svn:ignore属性添加到多个项目目录的额外工作可能是更好的选择:)全局忽略设置的问题是它是针对每个客户端的。如果有一个项目规则规定*.user文件不应该被修改,但是某些构建过程或任何在受控目录中生成它们的东西,那么您必须让每个人手动更新它们的配置。这实际上会阻止它被显式地
$svn add
'ed吗?不,如果您专门添加它,它将被添加,但是对它的更新将被忽略。加上1,因为这是svn和git之间的一个重要区别,因为git允许您将文件添加到repo,而不跟踪更改,例如音频或图形文件。