如何测试 app.yaml skip_files 正则表达式是不是与 App Engine 一起正常工作?

Posted

技术标签:

【中文标题】如何测试 app.yaml skip_files 正则表达式是不是与 App Engine 一起正常工作?【英文标题】:How do I test app.yaml skip_files regexps are working correctly with App Engine?如何测试 app.yaml skip_files 正则表达式是否与 App Engine 一起正常工作? 【发布时间】:2014-10-16 21:26:16 【问题描述】:

我有一个 app.yaml skip_files 元素:

skip_files:
- ^(.*/)?#.*#$
- ^(.*/)?.*~$
- ^(.*/)?.*\.py[co]$
- ^(.*/)?.*/RCS/.*$
- ^(.*/)?\..*$

如何准确列出正在跳过的文件?我正在使用 OSX,所以据我所知,我的 find util 没有扩展正则表达式。

【问题讨论】:

【参考方案1】:

使用选项 -v 运行 appcfg.py。这将向您显示正在处理的每个文件,并告诉您它是否由于您的 skip_files 而被跳过。

【讨论】:

哈。我完全忘记了这一点。虽然还有很多其他垃圾,但这是一个好的开始。 不是我想要的,但它确实给出了结果——所以谢谢。我将把问题留待更长时间,看看是否有人正是我想要的。 谢谢,你能指出@halfer 真是太好了!看起来网站上的链接已更改...我已经更新了我的个人资料。再次感谢! 谢谢!那指出我的问题来自我的.gitdirectory...【参考方案2】:

如文档所述:URL and file path patterns use POSIX extended regular expression syntax

因此,您可以使用 POSIX 正则表达式测试器来检查您的正则表达式是否按预期工作。例如。 http://www.rexv.org/

【讨论】:

感谢您的链接。不幸的是,这对我的情况不太实用。我必须生成所有源文件的列表,然后将其粘贴到网站中。我更喜欢在我的计算机上运行并使用我的源代码树的解决方案。我最糟糕的解决方案是创建一个 python 脚本来针对我的源代码树测试正则表达式,但我更喜欢命令行解决方案。 你可以使用 OSX 的find 命令:***.com/questions/6844785/… 我在发布问题之前尝试过,但由于出现以下错误而无法正常工作:find: -regextype: unknown primary or operator【参考方案3】:

如果您的问题是“我如何确保不会意外跳过文件”,那么一种方法是从 SDK 借用代码并编写脚本。看起来 FileIterator(在 google/appengine/tools/appcfg.py 中)可以满足您的需要。 (我有责任报告的警告是,FileIterator 不是已发布的 API,可能会随 App Engine 团队的心血来潮而改变。)

了解 POSIX 正则表达式可能会让您放心。您显示的列表会跳过编辑临时文件 (1,2)、.pyc 和 .pyo 文件 (3)、RCS 文件* (4) 和任何点文件 (5)。

* RCS 是一个老式的版本控制系统。我只认识一个还在使用它的人。如果您使用 git,则 .git(和内容)受 dotfiles 模式的保护。

【讨论】:

以上是关于如何测试 app.yaml skip_files 正则表达式是不是与 App Engine 一起正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

我是不是需要跨多个 YAML 文件复制“skip_files”?

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

如何在 Google App Engine app.yaml 中处理尾部斜线

GAE app.yaml:如何设置包含句点的环境变量?

如何将我的 app.yaml 迁移到 2.7?

我应该如何编写我的 Google App Engine app.yaml 文件?