RUDE

Получить последнее имя слияния файлов 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, но эта команда не возвращает никакого значения, когда файл добавляется в основную ветку во время процесса слияния. Любой указатель или помощь будут оценены.


20
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 соответственно.