Как запустить git diff в действиях github

Я получаю это:

Command failed: git diff --name-only HEAD^..HEAD
fatal: ambiguous argument 'HEAD^..HEAD': unknown revision or path not in the working tree.

Я хочу запустить git diff --name-only HEAD^..HEAD в своей ветке, чтобы получить список файлов, которые были изменены. Он работает локально, но не работает с действиями GitHub. Что я должен сделать?

Мой код такой:

name: build
on:
  push:
    branches:
      - main
jobs:
  run:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/[email protected]
      - name: Configure Node.js
        uses: actions/[email protected]
        with:
          node-version: 14.x
      - name: Install dependencies
        run: yarn install
      - name: Publish file changes to Slack
        # HERE I run `git diff` in node.js process
        run: "SLACK_TOKEN=${{ secrets.GITHUB_TOKEN }} npx ts-node scripts/publishSlackUpdate"
      - name: Build TOC
        run: make toc
      - name: Commit build changes
        uses: EndBug/[email protected]
        with:
          author_name: Docs Builder
          author_email: [email protected]
          message: 'Updated build'
          add: '*.md'

Вы проверяли свой репозиторий в своем действии? Было бы легче помочь вам, если бы вы показали нам неудачный рабочий процесс.   —  person alien    schedule 28.01.2021

Я не могу показать сбой рабочего процесса, что это частное репо. Нет, я не проверял, как мне это сделать? Это конкретная ветка, текущая ветка PR. Обновлено с моей конфигурацией.   —  person alien    schedule 28.01.2021

Под неудачным рабочим процессом я имел в виду опубликованное вами определение рабочего процесса. Спасибо! Похоже, вы проверяли репозиторий (с помощью действия actions/[email protected]). Дай мне посмотреть, смогу ли я воспроизвести неудачу …   —  person alien    schedule 28.01.2021

См. также:  Можно ли отразить частный репозиторий на gitlab.com по протоколу SSH?
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. alien

    Если вы посмотрите документацию по действию actions / checkout @ v2, вы увидите по умолчанию он выполняет неглубокий клон с одной ревизией:

        # Number of commits to fetch. 0 indicates all history for all branches and tags.
        # Default: 1
        fetch-depth: ''
    

    Поскольку он выбирает только одну ревизию, HEAD^ не существует.

    Вы можете исправить это, установив параметр fetch-depth в действии оформления заказа. Если установить значение 0, будет извлечена вся история; в качестве альтернативы, для того, что вы делаете, вы, вероятно, могли бы просто установить его на 2:

        steps:
          - name: Checkout repo
            uses: actions/[email protected]
            with:
              fetch-depth: 2
    

    как получить весь репозиторий github? Я хочу сделать что-то еще, где я просматриваю всю историю коммитов. person alien; 29.01.2021

    Это будет установка на 0, чтобы получить всю историю person alien; 29.01.2021

    Я попробовал это, и это не сработало. Также есть проблема, когда они говорят, что это невозможно. github.com/actions/checkout/issues / 161 ????‍♂️ person alien; 07.02.2021

    @hrdwdmrbl вроде работает нормально. Я попробовал это на в одном из моих репозиториев, и действие actions/[email;protected] было проверено из всей истории репозитория. person alien; 07.02.2021

    @larsks Я не вижу, где вы запускаете git diff ни в одном из ваших двух рабочих процессов, test-and-publish.yml или test-only.yml person alien; 08.02.2021

    @hrdwdmrbl Текущие действия — нет, но если вы перейдете по ссылке, которую я опубликовал, вы сможете увидеть команды, которые были запущены, и результат, который они сгенерировали. Например. разверните «Выполнить действия / checkout @ v2», затем разверните вставку «Выполнить действия / checkout @ v2», чтобы увидеть параметры. Разверните «Выполнить git log», чтобы увидеть команду и выходные данные, показывающие полный журнал git, а не журнал из неглубокого репозитория. person alien; 08.02.2021

    @hrdwdmrbl Я сделал вам полный пример здесь (я взял репозиторий GNU hello и добавил пример рабочего процесса). person alien; 08.02.2021

    @larsks Хорошо, я воспроизвел проблему с вашим кодом. ЕСЛИ вы укажете конкретную глубину выборки, это не сработает. проверить person alien; 09.02.2021

  2. alien

    Помещение origin/ перед именем ветки сработало для меня

    git diff --name-only origin/main origin/${GITHUB_HEAD_REF}
    
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: