You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Git Diff检测JSON的description字段变更并判断是否为唯一变更?

解决方案

核心思路

利用jq工具移除JSON文件中的description字段(无论它是字符串还是嵌套对象),对比移除前后的文件内容是否一致,以此判断是否存在非description字段的变更。

实现脚本

#!/bin/bash

# 获取所有变更的JSON文件
CHANGED_JSON_FILES=$(git diff --name-only origin/main -- '*.json')

# 无JSON文件变更时直接返回0,允许流水线继续
if [ -z "$CHANGED_JSON_FILES" ]; then
    exit 0
fi

# 标记是否存在非description字段的变更
HAS_OTHER_CHANGES=0

for FILE in $CHANGED_JSON_FILES; do
    # 提取当前版本文件移除description后的内容
    CURRENT_CONTENT=$(jq 'del(.description)' "$FILE")
    # 提取origin/main分支对应文件移除description后的内容
    ORIGIN_CONTENT=$(git show origin/main:"$FILE" | jq 'del(.description)')

    # 对比内容是否一致
    if [ "$CURRENT_CONTENT" != "$ORIGIN_CONTENT" ]; then
        echo "⚠️ 文件 $FILE 存在非description字段的变更"
        HAS_OTHER_CHANGES=1
    fi
done

# 根据检查结果返回状态码
if [ $HAS_OTHER_CHANGES -eq 1 ]; then
    exit 1
else
    exit 0
fi

关键说明

  • 依赖工具:确保环境中安装了jq(Azure DevOps流水线可通过任务安装:Ubuntu用apt-get install -y jq,Windows用choco install jq)
  • 字段处理:jq 'del(.description)'会删除顶层的description字段,无论其值是字符串还是嵌套多语言对象,都能准确移除
  • 变更范围:仅针对变更的JSON文件进行检查,未变更的文件不会被处理,提升效率
  • 格式校验:若JSON文件存在格式错误,jq会抛出异常,需确保所有JSON文件格式合法

内容的提问来源于stack exchange,提问作者user674989

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:18:16