如何解决为什么 Google Cloud Builder 没有使用 gsutil rsync -x 排除文件?
我目前正在运行 gsutil rsync 云构建命令:
gcr.io/cloud-builders/gsutil
-m rsync -r -c -d -x "\.gitignore" . gs://mybucket/
我在这里使用 -x "\.gitignore"
参数来尝试不复制 .gitignore
文件,如下所述:
https://cloud.google.com/storage/docs/gsutil/commands/rsync
但是,在查看存储桶和日志时,它仍然说:
2021-04-23T13:29:37.870382893Z Step #1: Copying file://./.gitignore [Content-Type=application/octet-stream]...
所以 rsync
仍然在复制文件,尽管有 -x "\.gitignore"
参数。
根据文档,-x
是 Python 正则表达式,因此 //./.gitignore
应该被 \.gitignore
捕获
有谁知道为什么这不起作用以及为什么文件仍在被复制?
解决方法
查看 rsync.py
源代码:
if cls.exclude_pattern.match(str_to_check):
在 Python 中,re.match
仅在出现在字符串开头时才返回匹配项。
因此,为了使用 -x
参数在任何地方找到匹配项,您需要使用 .*
或 (?s).*
预先添加您需要查找的模式:
gcr.io/cloud-builders/gsutil
-m rsync -r -c -d -x ".*\.gitignore" . gs://mybucket/
请注意,要确保 .gitignore
出现在字符串末尾,您需要附加 $
,-x ".*\.gitignore$"
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。