Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 全局忽略是否有方法指示特定文件,或仅在特定目录中指示文件名模式?_Svn - Fatal编程技术网

Svn 全局忽略是否有方法指示特定文件,或仅在特定目录中指示文件名模式?

Svn 全局忽略是否有方法指示特定文件,或仅在特定目录中指示文件名模式?,svn,Svn,我有一个文件,我不想删除,但不属于回购协议。我不想为它提交ignore属性,以免影响其他用户,如果他们的系统上有它,他们可能不想忽略它。我不想只是不做忽略,因为它只是困扰着我不得不特意忽略忽略忽略道具 我在配置文件中使用了全局忽略,我可以按名称忽略它,即:file.txt,但是如果有一天我有另一个名为file.txt的文件,我不想忽略它呢?所以我试着给它输入一个路径名,比如:folder/file.txt,因为我在windows上folder\file.txt,我想可能发生了某种正则表达式fol

我有一个文件,我不想删除,但不属于回购协议。我不想为它提交ignore属性,以免影响其他用户,如果他们的系统上有它,他们可能不想忽略它。我不想只是不做忽略,因为它只是困扰着我不得不特意忽略忽略忽略道具

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

即使我一直使用斜杠、反斜杠或转义反斜杠来驱动letter
c:\repo\folder\file.txt
,这些似乎都不起作用

那么,是否有任何方法可以在不使用属性的情况下引用此文件上的忽略


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

让我们一次一个地看一下:

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

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

  • 当您执行
    svn状态时,它不会被列出
  • 如果执行
    svn add*
差不多就是这样。事实上,忽略仅适用于存储库中的文件,而不适用于。您不能忽略已添加到存储库中的文件

你为什么要在全球范围内忽略某些东西? 假设我做C开发。我把后缀为*.c的文件编译成后缀为*.o的文件。我不希望这些*.o文件在我的目录中,所以我设置了一个全局忽略

为什么只想忽略单个目录中的某些内容? 假设我构建并执行一个程序,它会在我的目录中创建一个名为
output.txt
的文件。我不想将其添加到我的存储库中,因此我将该目录中的
svn:ignore
设置为忽略该文件

我用Maven构建东西,Maven创建一个目标目录,在我所有的Maven项目中,我告诉Subversion忽略那个目标目录

以空格分隔的globs是什么意思? Globbing是一种廉价且简单的类似正则表达式的语法形式。你可能一直在用它。它主要用于命令行。这是使用globbing:

$ ls *.txt
因此,所有以空格分隔的glob都表示一组glob表达式,如上面所述,无论它位于何处,您都希望忽略这些表达式。您可以用空格而不是逗号分隔它们:

对:

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

global-ignores="*.o, *~, *.class"
还有一件事,忽略(无论是全局还是通过
svn:ignore
)中的globs(即文件规范)不能有目录前缀。您不能全局忽略目录,但可以
svn:ignore
a目录。例如,我使用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设置的。第二个是通过正则表达式设置的


希望这能回答您的问题。

有,也没有。这里有很多好的信息和建议,我非常感谢这里的so+1。但是,我想做的似乎是不可能的,或者如果是的话,我也没有比以前更接近于能够做到这一点。另一方面,你说“你不能全局忽略目录”,我想这对于一个特定的目录是正确的,但是通过拥有一个
dirName
的全局,我可以全局忽略任何具有该名称的目录,这给了我一种错误的希望,我可以指定路径。我说的是:你不能将全局忽略设置为忽略目录。这些主要是针对在开发过程中创建的碎片:编译对象、备份文件等。或者您可以全局忽略一个目录——我从未尝试过,但这不是全局忽略的目的。您可以为目录和特定文件设置
svn:ignore
。如果我了解你的情况,这就是你真正想要做的。但是,这并不保证这些文件不会提交到存储库。唯一的方法是使用预提交钩子。