今天我遇到了一个问题,有人不小心将proj.user文件提交到SVN存储库。当我来更新时,它显然引起了问题。
让我想知道是否有任何方法可以阻止某些文件扩展名提交到存储库。
我确实知道有一个忽略列表,但据我所知,这仍然依赖于将文件添加到忽略列表的人。理想情况下,我想集中控制它,以便存储库而不是人控制。
这可能吗?
答案 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”运行时配置选项全局执行此操作。请点击链接获取更多信息。我认为全局忽略功能正是您可能正在寻找的。 p>