首页 > 解决方案 > 命令 '['git', 'rev-parse', 'HEAD^1']' 返回非零退出状态 128

问题描述

我是嵌入式编程的初学者,并试图建立一个工作流程,将代码大小自动放入数据库并与以前的版本进行比较。Github 上的初学者显然也是如此。我正在尝试一个由 Github Action 调用的 python 脚本。

所以这里是行动:

- name: Stamp revision
        working-directory: cobrax
        continue-on-error: True
        run: |
          pip install psycopg2-binary
          pip install click
          pip install prettytable
          python3 codesizes.py stamp build/zephyr/zephyr.elf

这是python代码中有问题的行,我正在尝试获取父版本:

    revision = subprocess.check_output(
        ["git", "rev-parse", "{}".format(revision)], encoding="UTF-8"
    ).strip()
    parent_revision = subprocess.check_output(
        ["git", "rev-parse", "{}^1".format(revision)], encoding="UTF-8"
    ).strip()

现在,对于完美工作的修订。但是,仅仅因为父版本的“^1”,我不断从 github 操作中收到以下错误消息:

subprocess.CalledProcessError: Command '...' returned non-zero exit status 128

所以,我尝试了一些事情,特别是:

["git", "rev-parse", "{}^".format(revision)], encoding="UTF-8"
    ).strip()
["git", "rev-list", "--parents", "-n", "1", revision, "|", "cut", "-d'", "'", "-f2-"], encoding="UTF-8"

但是,错误来自其他地方。由于我是初学者,我希望有人能向我解释一下,因为这显然是 github 操作的虚拟环境,因为在我的 ubuntu VM 上我没有这个问题。

谢谢您的帮助。

标签: pythongitgithub-actions

解决方案


经过一些研究,事实证明我使用的操作/checkout@v2 默认为浅的 --depth=1 克隆。这允许我使用 HEAD 但不是HEAD^

我的工作流程配置如下:

      - name: Checkout
        uses: actions/checkout@v2
        with:
          fetch-depth: 2

一切正常!


推荐阅读