在构建特性时,我发现保持完整配置的“备份”并将其提交到版本控制是很有用的。
如果在测试一个特性如何工作之后,当我将功能模块组合在一起时出现故障,我可以恢复配置导出中遗漏的内容。
不幸的是,每个站点安装都会在每个配置文件中产生不同的UUID,因此我无法使用diff来确定我打包的配置的站点安装版本中是否有丢失或意外的更改。Drush没有在导出时删除UUID的导出选项。
在过去,我们使用脚本删除所有的UUID行,但是没有内置到Drush中,我认为是Python或Bash,使用起来很尴尬。但如果我找到了我会发出去的。
我如何获得一个干净的差异的变化,过滤掉噪音的UUID更改?
发布于 2022-01-27 06:36:14
对于这个临时步骤,当您只需要浏览导出配置中的更改时,git diff -I"^uuid: " -- config/sync将返回一个简洁的列表,该列表将忽略以“uuid:”开头的任何行中的更改。
来自格特-迪夫上的doc页面:
-I<regex>
--ignore-matching-lines=<regex>
Ignore changes whose all lines match <regex>. This option may be specified more than once.该命令的高级版本还过滤掉文件删除& config_hash,使差异更简洁(heh) --所有这些都是免费的:
git diff -I"^uuid: " -I"config_hash" --diff-filter=MRC -- config/sync--diff-滤光片=[(A_C_[(A_(_(…)_*[]仅选择添加(A)、复制(C)、删除(D)、修改(M)、重命名(R)的文件,其类型为...
发布于 2019-07-24 00:37:11
这里所讨论的用例用于构建特性;config/sync目录从未用于导入,但它可以用于检查site install的结果是否与我们期望的结果有关(以及复制希望保存的文件或从保存的版本中删除的更改)。
然而,每个文件中没有意义的UUID更改使得在所有噪声中找不到该信息。
这里有一个解决方法,假定您使用Git进行版本控制,导出并提交配置,然后运行站点安装并重新导出配置(但尚未提交):
git diff -G '^[^u]*([^u][^i][^d][^:]).*'将只显示非uuid更改的文件。如果对整个配置(即,在配置的其他部分下缩进)的uuid进行了更改,则将显示该更改。
超级不确定的正则表达式,但它还没有一个假的负面或积极的。
下面是我在我的.bashrc中为使它更容易使用而拥有的功能:
# 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][^:]).*'"我花了很长时间想出这个解决办法,希望它能帮助别人。
https://drupal.stackexchange.com/questions/283771
复制相似问题