用于跳过文件以忽略 Mercurial 文件的 Google App Engine App.yaml 配置

Posted

技术标签:

【中文标题】用于跳过文件以忽略 Mercurial 文件的 Google App Engine App.yaml 配置【英文标题】:Google App Engine App.yaml config for skip-files to ignore Mercurial files 【发布时间】:2011-04-23 07:10:52 【问题描述】:

我在 skip_files 的顶部添加了一行,以使应用引擎部署跳过所有以 .hg 开头的文件,例如 .hgignore 文件和 .hg 目录。这会忽略整个 .hg 目录及其所有文件和子目录吗?

skip_files:
- ^(.*/)?\.hg*$
- ^(.*/)?app\.yaml
- ^(.*/)?app\.yml
- ^(.*/)?index\.yaml
- ^(.*/)?index\.yml
- ^(.*/)?#.*#
- ^(.*/)?.*~
- ^(.*/)?.*\.py[co]
- ^(.*/)?.*/RCS/.*
- ^(.*/)?\..*

【问题讨论】:

【参考方案1】:

default 跳过 unix 风格的隐藏文件和文件夹。换句话说,任何以点 (.) 开头的文件都已被跳过。如果列表最后没有缺少*,这就是列表中最后一行的作用(我假设 \s 实际上在那里)。

您的建议:^(.*/)?.hg$ 不太正确。要匹配以.hg 开头的任何文件,您需要^(.*/)?\.hg.*

你应该阅读regular expressions。

编辑:从 appcfg.py update -v 添加转储。

Scanning files on local disk.
2010-10-10 17:14:07,244 INFO appcfg.py:1693 Ignoring directory '.hg': Directory matches ignore regex. 
2010-10-10 17:14:07,244 INFO appcfg.py:1686 Ignoring file '.hgignore': File matches ignore regex. 

【讨论】:

Mercurial 还有一个名为 .hg 的文件夹。我的正则表达式希望捕获 .hgignore 文件和 .hg 目录及其所有文件。例如,在 .hg 文件夹中名为 undo.branch 的文件实际上称为 .hg\undo.branch ,它将与我的表达式匹配。换句话说:任何以 .hg开头的东西都不得上传到 Google。 应用引擎看到 .hg\undo.branch 还是看到 undo.branch?它传递给正则表达式子例程的是什么? 您建议的模式将匹配以“hg”结尾的内容。它会查看路径,因此会看到“.hg/undo.branch”。我建议的正则表达式应该捕获以 '.hg' 开头的任何内容,然后是零个或多个字符。但是,同样,默认的跳过文件模式应该跳过以句点开头的任何内容。 它似乎没有上传文件 - 但我也不知道如何告诉 GAE GUI 在部署时给我一个详细的列表。我当然不知道如何“探索”上传到应用引擎进行验证的文件! 从命令行运行appcfg.py update -v .。这将为您提供详细的输出。从我的输出中可以看出,默认设置 将忽略 .hg*.

以上是关于用于跳过文件以忽略 Mercurial 文件的 Google App Engine App.yaml 配置的主要内容,如果未能解决你的问题,请参考以下文章

忽略Mercurial中文件的未来更改,但仍然跟踪它[重复]

JavaScript Mercurial忽略文件

如何撤消 Mercurial 中所有添加的文件

文件拷贝跳过和忽略

如何忽略具有给定前缀的文件?

可以制作 Mercurial 以保留文件权限吗?