Как найти сообщение фиксации с помощью BLOB SHA1 - PullRequest
0 голосов
/ 02 августа 2020

Я новичок в GIT и пытаюсь выполнить некоторую проверку с объектами Bit Bucket .

Я использую приведенный ниже сценарий, чтобы найти все объекты в ветке: git ls-tree -r branch-name

Это дает мне имя объекта вместе с информацией SHA1 BLOB-объекта. Я хочу найти сообщение фиксации из большого двоичного объекта. Мы используем номер jira в сообщении фиксации, и я хочу извлечь jira no из сообщения.

Проблема в том, что файл несколько раз фиксируется для разрешить конфликт слияния для какого-либо другого объекта, и, таким образом, когда я пытаюсь найти commitID из SHA1 , он дает мне последний commitID, что неверно, поскольку это jira не связан с конкретным объектом.

Если я увижу объект в удаленном репо, я все равно могу видеть правильное сообщение фиксации (jira-no) и, таким образом, хотел бы получить объект и соответствующее сообщение фиксации из целевая ветка. Пожалуйста, предложите, есть ли способ сделать это.

Другой запрос - это способ разрешения конфликта слияния. В случае конфликта с одним объектом мы обычно извлекаем все содержимое целевой ветви, а затем разрешаем конфликтующий объект. Благодаря этому объект, который не был изменен, также снова фиксируется. Любой простой способ вытащить только конфликтующий объект.

Спасибо за вашу помощь

1 Ответ

1 голос
/ 02 августа 2020

Ну ... проблема в том, что один-единственный blob может присутствовать в многих ревизиях ... но вы можете попробовать с псевдо-1-лайнером:

git log --all --pretty=%h | while read revision; do
    lines=$( git ls-tree -r $revision | grep object-id | wc -l )
    if [ $lines -gt 0 ]; then
        # it's present here
        git show --summary --pretty="%h %s" $revision
    fi
done

Замените object-id идентификатором большого двоичного объекта, который вам нужен. Так и должно быть.

...