首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在比较配置导出之间的差异时忽略UUID

在比较配置导出之间的差异时忽略UUID
EN

Drupal用户
提问于 2019-07-24 00:33:02
回答 2查看 523关注 0票数 3

在构建特性时,我发现保持完整配置的“备份”并将其提交到版本控制是很有用的。

如果在测试一个特性如何工作之后,当我将功能模块组合在一起时出现故障,我可以恢复配置导出中遗漏的内容。

不幸的是,每个站点安装都会在每个配置文件中产生不同的UUID,因此我无法使用diff来确定我打包的配置的站点安装版本中是否有丢失或意外的更改。Drush没有在导出时删除UUID的导出选项

在过去,我们使用脚本删除所有的UUID行,但是没有内置到Drush中,我认为是Python或Bash,使用起来很尴尬。但如果我找到了我会发出去的。

我如何获得一个干净的差异的变化,过滤掉噪音的UUID更改?

EN

回答 2

Drupal用户

发布于 2022-01-27 06:36:14

对于这个临时步骤,当您只需要浏览导出配置中的更改时,git diff -I"^uuid: " -- config/sync将返回一个简洁的列表,该列表将忽略以“uuid:”开头的任何行中的更改。

来自格特-迪夫上的doc页面:

代码语言:javascript
运行
复制
-I<regex>
--ignore-matching-lines=<regex>

    Ignore changes whose all lines match <regex>. This option may be specified more than once.

但是等等..。更多了!

该命令的高级版本还过滤掉文件删除& config_hash,使差异更简洁(heh) --所有这些都是免费的:

代码语言:javascript
运行
复制
git diff -I"^uuid: " -I"config_hash" --diff-filter=MRC -- config/sync

下面是医生参考资料--diff-filter

--diff-滤光片=[(A_C_[(A_(_(…)_*[​]仅选择添加(A)、复制(C)、删除(D)、修改(M)、重命名(R)的文件,其类型为...

票数 4
EN

Drupal用户

发布于 2019-07-24 00:37:11

这里所讨论的用例用于构建特性;config/sync目录从未用于导入,但它可以用于检查site install的结果是否与我们期望的结果有关(以及复制希望保存的文件或从保存的版本中删除的更改)。

然而,每个文件中没有意义的UUID更改使得在所有噪声中找不到该信息。

这里有一个解决方法,假定您使用Git进行版本控制,导出并提交配置,然后运行站点安装并重新导出配置(但尚未提交):

代码语言:javascript
运行
复制
git diff -G '^[^u]*([^u][^i][^d][^:]).*'

将只显示非uuid更改的文件。如果对整个配置(即,在配置的其他部分下缩进)的uuid进行了更改,则将显示该更改。

超级不确定的正则表达式,但它还没有一个假的负面或积极的。

下面是我在我的.bashrc中为使它更容易使用而拥有的功能:

代码语言:javascript
运行
复制
# Diff that ignores config files whose only change is the UUID (ignores lines
# starting with 'uuid:' and probably other stuff but it's solid so far.)
alias gdu="git diff -G '^[^u]*([^u][^i][^d][^:]).*'"

我花了很长时间想出这个解决办法,希望它能帮助别人。

票数 1
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/283771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档