xgettext dry 运行 避免在 Github 工作流程中进行不必要的提交

xgettext dry run to avoid unnecessary commits in Github workflow

有什么方法可以对源文件进行 xgettext 的干燥 运行,以便简单地检查与当前 .pot 文件相比是否有任何差异?

我已经设置了一个 Github 工作流程,只要将对源文件的更改推送到存储库,该工作流程就会 运行 xgettext 处理源文件。结果是,对源文件的更改通常不会更改翻译字符串,因此生成的 .pot 文件的唯一区别是创建日期,每次 xgettext 都会更新 运行。这会导致不必要的提交,并触发对我的 weblate 实例的不必要的 webhook 调用,该实例在“更新的”.pot 文件上拾取,并最终使用“更新的”.pot 文件生成自己的合并请求。

如果有办法干 运行 并首先检查字符串中是否存在任何实际差异,我可以避免不必要的提交和 PR 污染我的 repo。有什么想法吗?

我能够在我的 Github 工作流程中添加一个过滤器,检查除了对 .pot 文件中 POT-Creation-Date 的值进行简单更新之外是否有任何重大变化。我在处理 运行 xgettext 的步骤中添加了一个 id,然后在 运行 xgettext 之后我保存了 pot 文件中更改的重要行数到下一步可以访问的变量:

      - name: Update source file translation strings
        id: update_pot
        run: |
          sudo apt-get install -y gettext
          xgettext --from-code=UTF-8 --add-comments='translators:' --keyword="pgettext:1c,2" -o i18n/litcal.pot index.php
          echo "::set-output name=POT_LINES_CHANGED::$(git diff -U0 | grep '^[+|-][^+|-]' | grep -Ev '^[+-]"POT-Creation-Date' | wc -l)"

然后我在 运行 提交步骤之前检查这个变量:

      - name: Push changes  # push the output folder to your repo
        if: ${{ steps.update_pot.outputs.POT_LINES_CHANGED > 0 }}
        uses: actions-x/commit@v4
        with:
          # The committer's email address
          email: 41898282+github-actions[bot]@users.noreply.github.com
          # The committer's name
          name: github-actions
          # The commit message
          message: regenerated i18n/litcal.pot from source files

等等