git проверит, если коммит это коммит слияния - PullRequest
0 голосов
/ 25 февраля 2019

Я создаю работу Дженкинса, и я делаю исправление.У меня есть ветка с исправлениями, которая объединена с master, затем этот коммит помечен минорной версией.После этой работы мастер слился в разработку.Мне нужно обнаружить этот коммит.Если это из слияния с мастером, то создайте его с помеченной версией.Когда это не так, просто построить последнюю версию.Есть ли простой способ определить, является ли это фиксацией слияния от мастера?

1 Ответ

0 голосов
/ 26 февраля 2019

Попробуйте следующий фрагмент как скрипт, чтобы проверить, является ли фиксация слиянием.

#!/bin/bash
commit_hash=$(git rev-parse HEAD)
parent_hashes=`git rev-list --parents -n 1 $commit_hash`
parent_count=`wc -w <<< $parent_hashes`
if [[ $parent_count -gt 2 ]]
then
  p=`git name-rev $parent_hashes | xargs -0 | grep -e '^\S\+ master$'`
  if [[ ! -z $p ]]
  then
    echo "merged; master"
    exit 0
  else
    echo "merged; non-master"
    exit 2
  fi
else
  echo "not merged"
  exit 1
fi

Фон

В git слияние просто означает, что коммит имеет более одного родителя.

  • Команда git rev-list --parents -n 1 $commit_hash возвращает набор хэшей коммитов, которые являются родителями этого коммита.

  • Чтобы проверить, существует ли больше2 родителя *, wc -w <<< $parent_hashes проверено.

  • , передавая его по xargs, git name-rev соберет имя ссылки каждого коммита, чтобы мы могли проверить, является ли оно master - это то, что команда grep -e (fancy regex) делает

Наконец, команда печатает некоторый отладочный текст и возвращает код выхода в зависимости от ситуации.

Отказ от ответственности

Этот сценарий не готов к работе.Могут быть некоторые крайние случаи, которые я не рассматривал;если вы найдете что-нибудь, напишите мне, и я исправлю этот ответ.


* Примечание. git rev-list --parents [...] также возвращает хэш этого коммита.Я не исследовал почему, но если вы знаете, дайте мне знать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...