gpt4 book ai didi

SVN 全局忽略不起作用(其他帖子的解决方案不起作用)

转载 作者:行者123 更新时间:2023-12-04 20:55:21 25 4
gpt4 key购买 nike

我进入我的 .subversion/config 并添加 .settings,但从 svn diff 中,我们发现它不起作用。

~/Space/ifp-integration/CIGNA-IFP-ESB$ svn diff
Index: .settings/org.eclipse.jdt.core.prefs
===================================================================
--- .settings/org.eclipse.jdt.core.prefs (revision 2014)
+++ .settings/org.eclipse.jdt.core.prefs (working copy)
@@ -1,6 +1,15 @@

这表明一定有人 checkin 了它,但我不在乎,因为无论哪种方式我都想忽略它。有没有办法确保它被忽略?

最佳答案

您不能忽略存储库中的内容。这不是 Subversion 中忽略的工作方式。

忽略只是一种防止意外 添加文件到存储库的方法。如果存储库中已经存在文件,则不能忽略它。

全局忽略仅适用于文件而不适用于目录。如果您在 Subversion 配置文件中说忽略 .settings,它不会忽略名为 .settings 的目录,而只会忽略名为 .settings 的文件.而且,如果 .settings 文件不在存储库中,它只会忽略它。

基本上,如果您说 svn add *svn status,则不会添加任何不在存储库中且与您的全局忽略模式匹配的文件在 svn 状态。就是这样。

您可以在名为 svn:ignore 的目录上创建一个类似的属性。然而,svn:ignore 也会忽略目录。比如你有一个Maven项目,你可以设置svn:ignore = target,target文件夹就不会上报了。但是,svn:ignore 仅适用于该属性所在的目录,而不适用于子目录。

那么你怎么能忽略 .settings 目录呢?很简单:你不检查它。不幸的是,在 Subversion 中没有简单的方法可以做到这一点。您可以执行以下操作:

$ svn checkout --depth=immediates http://server/src/myproj

这将检查您工作目录中的所有文件夹和文件,但不会检查任何子目录。在 Kornshell 和 BASH 中(如果您设置 shopt -s extglob):

$ svn update --set-depth=infinity !(.settings)

这将在除 .settings 目录之外的所有目录中继续您的 checkout 。

您也可以这样做:

$ svn update --set-depth=exclude .settings

.settings 目录已被 checkout 后删除它。这不会从存储库中删除 .settings 目录,但会从您的工作目录中删除 .settings 目录,以及 svn diff在您的工作目录(但不是存储库 URL)上不会报告 .settings 目录中的任何内容。

我需要强调的重要一点:忽略只会防止意外将文件添加到您的存储库中。它不会阻止某人添加它,并且一旦它存在,它就不会被忽略。

此外,您的全局忽略设置并非对所有人都是全局的。只给你。如果你想阻止人们添加不应该添加到存储库的文件,你需要一个预提交钩子(Hook),比如 this one .

此钩子(Hook)可用于防止提交具有特定名称的文件或目录,也可用于确保设置文件和目录的属性。例如,您可能希望确保人们无法在您的项目中添加 .settings 目录。或者目录上的 svn:ignore 属性设置为忽略 .settings 目录。

关于SVN 全局忽略不起作用(其他帖子的解决方案不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10235297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com