如何标记文件来管理差异输出

如何标记文件来管理差异输出

我的同事正在维护一个配置文件,该文件由 SaltStack 部署到生产/测试/暂存环境中。我通过使用 diff 来维护此文件,以查看发生了什么变化并编写适当的 jinja 代码片段。

文件名为program.conf,SaltStack 版本为program.conf.jinja

program.conf有如下形式的行:

variable = "value"

program.conf.jinja是:

variable = "{{ value }}"

从 diff 的角度来看,它们是不同的。但从我的角度来看,它们是相同的。我正在寻找一个类似 pragma 的功能,我可以在其中将 jinja 文件标记为以下内容,这样我就不会在 diff 的输出中得到它:

variable = "{{ value }}" # pragma-same: variable = "value"

我还将使用该实用程序生成警报,强制人们更新 jinja 文件中缺少的任何变量。

variable = "value"有时会变成更复杂的诗节,例如:

{% if pillar.get(...) %}
variable = {{ value }}
{% else %}
variable = {{ value + 2 }}
{% endif %}

答案1

您是否愿意创建一个规范化的临时文件并与其进行比较?

sed 's/{{ \(.*\) }}/\1/' program.conf.jinja > temp  &&  diff program.conf temp

相关内容