“svn add *”甚至添加那些被忽略的文件

发布于 2024-10-01 00:02:19 字数 184 浏览 6 评论 0原文

我正在使用 svn add * 将文件添加到 svn,它添加了配置文件,该文件肯定会被添加以忽略。

lyuba@lyuba-laptop:/workspace/project$ svn propget svn:ignore
.sass-cache
config.js

什么可能导致问题?

I am using svn add * to add files to the svn, and it adds the config file which is for sure added to ignore.

lyuba@lyuba-laptop:/workspace/project$ svn propget svn:ignore
.sass-cache
config.js

What can cause the problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

风吹过旳痕迹 2024-10-08 00:02:19

超级老问题,但我刚才遇到了这个问题,我找到的解决方案没有在这里列出。阿德里安·史密斯的答案是正确的。我认为文档和 SVN 本身在 5 年内已经有了很多更新。这是我在 SVN 文档

即使设置了 svn:ignore,如果在命令中使用 shell 通配符,也可能会遇到问题。在 Subversion 对其进行操作之前,Shell 通配符会扩展为明确的目标列表,因此运行 svn SUBCOMMAND * 与运行 svn SUBCOMMAND file1 file2 file3 … 一样。对于 svn add 命令,其效果类似于传递 --no-ignore 选项。因此,不要使用通配符,而是使用 svn add --force . 来批量调度未版本化的内容以进行添加。显式目标将确保当前目录不会因为已处于版本控制之下而被忽略,并且 --force 选项将导致 Subversion 爬行该目录,添加未版本控制的文件,同时仍然遵循svn:ignore 属性和 global-ignores 运行时配置变量。如果您不希望对要添加的内容进行完全递归抓取,请务必为 svn add 命令提供 --深度文件 选项。

简短的版本是使用 svn add --force 。这对我来说非常有用。

Super old Question but I ran into this issue just now and the solution I found is not listed here. Adrian Smith's answer is on the right track. I assume the docs and SVN itself have seen many updates in 5 years. Here is what I found in the SVN docs

Even if svn:ignore is set, you may run into problems if you use shell wildcards in a command. Shell wildcards are expanded into an explicit list of targets before Subversion operates on them, so running svn SUBCOMMAND * is just like running svn SUBCOMMAND file1 file2 file3 …. In the case of the svn add command, this has an effect similar to passing the --no-ignore option. So instead of using a wildcard, use svn add --force . to do a bulk scheduling of unversioned things for addition. The explicit target will ensure that the current directory isn't overlooked because of being already under version control, and the --force option will cause Subversion to crawl through that directory, adding unversioned files while still honoring the svn:ignore property and global-ignores runtime configuration variable. Be sure to also provide the --depth files option to the svn add command if you don't want a fully recursive crawl for things to add.

The short version is use svn add --force . This works perfectly for me.

谁的新欢旧爱 2024-10-08 00:02:19

在 UNIX 和 Linux 中,如果您说

svn add *

那么 shell 将展开目录中的所有文件,程序将看到与您键入

svn add file-a.txt file-b.txt file-c.txt

etc 相同的内容。这意味着 Subversion 命令认为您已明确列出要添加的文件。在这种情况下,即使可能设置了 svn:ignore 属性,它也会添加它。

来自 svn:ignore 的文档 (我的重点):

Subversion 使用忽略模式来确定哪些文件不应作为较大的递归添加或导入操作的一部分扫入版本控制系统。

In UNIX and Linux, if you say

svn add *

Then the shell will expand all the files in the directory and the program will see the same as if you'd typed

svn add file-a.txt file-b.txt file-c.txt

etc. This means that the Subversion command thinks you've explicitly listed the file for adding. In this case, it'll add it, even though the svn:ignore property might be set.

From the documentation of svn:ignore (my emphasis):

Subversion uses the ignore patterns to determine which files should not be swept into the version control system as part of a larger recursive addition or import operation.

旧夏天 2024-10-08 00:02:19

使用此命令而不是 svn add --force * :

svn add --force ./

在这种情况下,svn 本身解析目录中的所有文件,并考虑忽略的文件,但是当您使用 * 时,您明确告诉 svn 添加所有文件。

Use this command instead of svn add --force * :

svn add --force ./

In this case svn itself parse all files in directory and it considers the ignored files, but when you use *, you explicitly tell svn to add all files.

你穿错了嫁妆 2024-10-08 00:02:19

我发现这个问题包含一个非常好的解决方案。由于答案实际上并没有回答问题,所以我不认为它是重复的。
简而言之,使用 unix 工具的强大功能(在 Windows 上与 cygwin 一起使用)

: grep '?' | sed 's/^.* /svn add /' | sed 's/^.* /svn add /' | bash

I found that this question contains a very good solution. As the answer is not actually answering the question, I do not think it is duplicate.
In brief use the power of unix tools (works with cygwin on windows):

svn status | grep '?' | sed 's/^.* /svn add /' | bash

微凉 2024-10-08 00:02:19

您是否尝试过提交 config.js 以查看它是否真的被忽略?我认为如果你明确告诉 svn 将文件添加到版本控制中,它会覆盖忽略。

Have you tried committing the config.js to see if it is really ignored? I think if you specifically tell svn to add a file to version control, it'll over ride the ignore.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文