【发布时间】:2009-01-06 12:26:24
【问题描述】:
今天我遇到了一个问题,有人不小心将 proj.user 文件提交到 SVN 存储库。当我来更新时,它显然引起了问题。
这让我想知道是否有任何方法可以阻止某些文件扩展名提交到存储库。
我确实意识到有一个忽略列表,但据我所知,这仍然依赖于将文件添加到忽略列表的人。理想情况下,我想集中控制它,以便存储库而不是人来控制。
这可能吗?
【问题讨论】:
标签: svn version-control
今天我遇到了一个问题,有人不小心将 proj.user 文件提交到 SVN 存储库。当我来更新时,它显然引起了问题。
这让我想知道是否有任何方法可以阻止某些文件扩展名提交到存储库。
我确实意识到有一个忽略列表,但据我所知,这仍然依赖于将文件添加到忽略列表的人。理想情况下,我想集中控制它,以便存储库而不是人来控制。
这可能吗?
【问题讨论】:
标签: svn version-control
是的,一般有两种方法。要么创建提交钩子(这可能不是您想要做的),或者更容易地将 svn:ignore 属性添加到您的目录。由于属性与项目一起维护,这将影响每个人。例如,要忽略 *.user 文件,您可以将其添加到它们出现的目录中:
svn propset svn:ignore '*.user' .
然后像往常一样提交您的更改。从现在开始,该目录中的 *.user 文件将不再参与 stat、update、commit 等 svn 命令。但是,您必须将该属性添加到需要忽略字段的每个目录。它不会自动递归地作用于您的项目树。如果出于任何原因,您确实想要更新被忽略的文件,您可以将 --no-ignores 标志传递给命令。
【讨论】:
$ svn add'ed 吗?
您可以添加一个颠覆预提交挂钩来防止人们提交它们。这具有服务器端的优势,而不是每个客户端的设置。
【讨论】:
我不得不使用
svn propset svn:ignore '*.user' .
为了使用上面接受的答案。
【讨论】:
关于这个:
这真的会阻止它 明确添加了 $ svn? – 西兰斯洛特 2009 年 1 月 6 日 18:14
不,如果你专门添加它,它 将被添加,但会对其进行更新 被忽略。 – Jason Coco 2009 年 1 月 6 日在 20:08
我相信你不能用 svn:ignore 道具来做到这一点。根据 svnbook 1.5 手册:
"Subversion 对 ignorable 的支持 文件模式仅扩展到 添加未版本化的一次性过程 文件和目录到版本 控制。一旦一个物体在 Subversion的控制,忽略 模式机制不再适用于 它。换句话说,不要期望 颠覆以避免提交更改 你已经制作了一个版本控制的文件 因为该文件的名称与 忽略模式——总是颠覆 注意到它的所有版本化对象。”
【讨论】:
您想在服务器端添加一个忽略列表?我认为这不是直接可能的,但您可以分析预提交挂钩中的文件(请参阅:http://svnbook.red-bean.com/en/1.1/ch05s02.html#svn-ch-5-sect-2.1)并在名称/模式不正确时完全拒绝提交?
【讨论】:
在 SVN 中,您手动将文件添加到存储库。因此,拥有文件扩展名阻止列表是没有意义的。您可以使用 svn ignore 忽略特定文件,但同样,您需要手动从存储库中添加和删除文件。
另见How do you remove a file from being version controlled without deleting the file in subversion?
【讨论】:
查看svn:ignore 属性。
【讨论】:
除了设置ignore property,您还可以使用“global-ignore”运行时配置选项来全局执行此操作。按照链接了解更多信息。我认为您可能正在寻找全局忽略功能。
【讨论】: