svn:ignore 是本地计算机吗?

标签 svn version-control

当我使用 svn:ignore 从 SVN 中排除文件时然后另一个人尝试提交排除的文件, svn 阻止他?或者他必须在他的电脑上执行相同的命令?

最佳答案

想象一下,如果您有一堆 Java 文件( *.java )。这些被编译成 *.class文件。已编译 *.class文件不应存储在 Subversion 中。

现在,想象一个开发人员创建了一堆新的 *.java文件,编译它们,对结果很满意,然后这样做:

$ svn add *

在这种情况下,Subversion 会愉快地添加所有已编译的 *.class文件。不是你想要的...
svn:ignore属性位于要忽略文件的目录中。当且仅当文件不在 Subversion 中时,如果文件与 svn:ignore 匹配,该文件将不会显示。文件上的 glob 模式,用户执行 svn statussvn add与外卡。

svn status命令,这些文件不会显示 ?标记在输出行的开头。如果用户尝试使用通配符添加,Subversion 将忽略这些文件。

在上述场景中,如果开发人员这样做:
$ svn add *
svn:ignore属性将阻止 *.class文件被添加。

但是,如果用户专门添加了一个被忽略的文件:

$ svn 添加 foo.class

然后,Subversion 不会忽略该文件。而且,一旦将其添加到存储库中,如果文件被更改或删除,Subversion 将报告它。
svn:ignore属性对所有 checkout 该目录版本的用户可见。这是防止意外添加文件的好方法,但它不能阻止某人实际添加它们。

我有一个 pre-commit hook这可以让事情更进一步。有了它,您可以防止用户将特定文件添加到存储库中。您还可以强制用户设置 svn:ignore当他们创建一个新目录时。

关于svn:ignore 是本地计算机吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9489022/

相关文章:

version-control - 在创建新子分支中显示所有待处理任务

svn - TortoiseSVN警告: you are trying to relocate your working copy to a different path inside the same repository

svn - Jenkins SubWCRev E155036 工作副本太旧

version-control - 如何在团队开发中正确使用 NuGet?

version-control - Team Foundation Server - 随历史移动源

git - 我可以从另一个分支添加对暂存区的更改吗?

eclipse - 什么应该提交到 Eclipse 工作区中的存储库?

svn - 如何将 SVN 工作副本中的修改保存到 zip 文件

svn - 在 Tortoise 中合并文件时,为什么我有时会得到 2 个文件的工作副本

windows - 远程控制git仓库