Получить последнее имя слияния файлов azure devops

Я работаю над доказательством концепции для моего проекта. Одним из требований является получение имени файла, который был последним зафиксирован в основной ветке. Я вызываю приведенную ниже команду из конвейера Azure.

$a = git diff-tree --no-commit-id --name-only -r $(Build.SourceVersion)

Он отлично работает, когда я напрямую передаю файл в основную ветку. Когда я создаю другую ветку и добавляю в нее файл, а затем объединяю ее с основной веткой, и когда я пытаюсь выполнить ту же команду, она не приносит мне никакого значения. В качестве альтернативы я также пробовал git diff-tree --no-commit-id --name-only -r HEAD, но эта команда не возвращает никакого значения, когда файл добавляется в основную ветку во время процесса слияния. Любой указатель или помощь будут оценены.

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
20
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете получить последний хэш фиксации из ветки main, независимо от того, является ли это слиянием или нет, используя эту команду:

git log -n 1 --pretty=format:"%H" main

Затем вы сможете подключить это к существующей команде, например:

 git diff-tree --no-commit-id --name-only -r $(git log -n 1 --pretty=format:"%H" main)

P.S. вы можете ограничить его слиянием или отсутствием слияния, добавив переключатели --merge или --no-merges соответственно.

Проще, чем git log -n -1: git rev-parse main. (Для надежности сценария замените main на refs/heads/main независимо от того, какой из них вы используете.) Но обратите внимание, что вам вообще не нужно этого делать: git diff-tree принимает в качестве различных древовидных аргументов имена ветвей! Например, git diff-tree --no-commit-id --name-only -r main HEAD сравнит снимок в main со снимком в HEAD.

torek 17.05.2022 18:21

Спасибо !!! Решение сработало. Решение Torek тоже работает

saagarlearn 17.05.2022 22:28

Другие вопросы по теме