全局忽略是否有一种方法来指示特定的文件,或者仅在特定目录中指示文件名模式



我有一个文件不想删除,但不属于repo。我不想为它提交一个忽略属性,以免影响其他用户,如果他们的系统中有它,他们可能不希望它被忽略。我不想只是不提交忽略,因为这只会让我很烦恼,因为我不得不特意忽略忽略道具。

我在配置文件中使用了全局忽略,我可以按名称忽略它,即:file.txt,但如果有一天我有另一个名为file.txt的文件不想被忽略,那该怎么办?所以我试着给它输入一个路径名,比如:folder/file.txt,因为我在windows folderfile.txt上,我想可能有某种正则表达式发生在folder\file.txt

这些似乎都不起作用,即使我一直使用斜杠、反斜杠或转义反斜杠来驱动字母c:repofolderfile.txt

那么,有没有任何方法可以在不使用属性的情况下专门引用该文件上的忽略?

此外,文档将这些模式称为"空白分隔的globs",glob在这个意义上对我来说是一个新术语,有人能解释一下这个定义吗?考虑到glob有许多非IT定义,谷歌不是我的朋友。

让我们一次看一件事:

忽略某些内容只是一种方法,可以帮助您避免意外地将不想要的内容放入存储库。它在本质上可以是全局,也可以仅是特定目录的本地目录。

忽略Subversion中的某些内容会做两件事:

  • 当您执行svn status时,它不会列出
  • 如果您执行svn add *,则不会添加它

事实上,忽略只适用于存储库中的文件,而不适用于。您不能忽略已添加到存储库中的文件。

你为什么要在全球范围内忽略一些东西

假设我做C开发。我取后缀为*.c的文件,然后将它们编译为后缀为*.o的文件。我不希望这些*.o文件在我的目录中,所以我设置了全局忽略。

为什么只想忽略一个目录中的内容

假设我构建并执行一个程序,它会在我的目录中创建一个名为output.txt的文件。我不想将其添加到我的存储库中,所以我将该目录中的svn:ignore设置为忽略该文件。

我用Maven构建东西,Maven创建了一个目标目录。在我所有的Maven项目中,我告诉Subversion忽略的目标空格分隔的globs是什么意思?

globing是一种廉价而简单的类似正则表达式的语法形式。你可能一直在用它。它主要用于命令行。这是使用globbing:

$ ls *.txt

因此,所有空格分隔的glob均值都是一堆glob[/em>表达式,无论它在哪里,你都想忽略它。你用空格而不是逗号分隔它们:

右:

global-ignores="*.o *~ *.class"

错误:

global-ignores="*.o, *~, *.class"

还有一件事,忽略(无论是全局的还是svn:ignore)中的globs(即文件规范)不能有目录前缀。您不能全局忽略目录,但可以svn:ignore一个目录。例如,我使用Maven,它在名为target的目录下构建所有内容。我可以在目标目录上设置一个svn:ignore

那么,回到你的问题上来。如果每个人都有这个文件,但没有人应该将它添加到Subversion,那么应该在该目录中忽略它。所要做的就是防止有人意外地将其添加到Subversion中。它不会从他们的视野中隐藏它。

如果事实上,最后,你可以忽略不计。您可以通过简单地指定文件来提交和添加文件,即使您之前说过要忽略它们。

如果你真的想确保你不会意外地提交不应该提交的文件,你应该使用我的预提交触发器。这允许您指定不应该提交的内容和位置。可以使用globbing语法或正则表达式语法。例如:

[file Don't allow people to add foo files to the bar directory]
file=**/bar/foo.*
access=no-add
users=@ALL
[file Don't allow people to add bar files to the foo directory]
match=/bar/foo.*$
access=no-add
users=@ALL

第一个是通过glob设置的。第二个是通过正则表达式设置的。

希望这能回答您的问题。

相关内容

最新更新