Найти коммит с определенной git note - PullRequest
0 голосов
/ 06 сентября 2018

Я использую git notes в своем хранилище. Иногда мне нужно найти коммит с примечанием, которое включает данную строку. До сих пор я использовал эту команду:

git log --show-notes=* --grep="PATTERN" --format=format:%H

Проблема здесь в том, что при каждом патче SHA печатается PATTERN, даже если он не находится в примечаниях только в сообщении коммита. Есть ли лучший способ для этого?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Заметки хранятся в COMMIT ed TREE, который «спрятан» сбоку под ссылкой на заметку (refs/notes/commits по умолчанию). Это означает, что вы можете обрабатывать их как контент.

$ git grep Testing refs/notes/commits
refs/notes/commits:fad066950ba73c309e80451d0d0f706e45adf5a8:This is a test - Testing

$ git show fad0669
commit fad066950ba73c309e80451d0d0f706e45adf5a8
Author: Mark Adelsberger <adelsbergerm@xxx>
Date:   Thu Sep 6 07:51:15 2018 -0500

    1

Notes:
    This is a test - Testing

diff --git a/file1 b/file1
index e69de29..038d718 100644
--- a/file1
+++ b/file1
@@ -0,0 +1 @@
+testing
0 голосов
/ 06 сентября 2018

В строке формата есть заполнитель для заметок, %N. Я не знаю, как печатать заметки в одну строку, поэтому я использую цикл для проверки заметок всех достижимых коммитов одну за другой.

Попробуйте

git log --format=%H | while read commit;do
    git log -1 $commit --format=%N | if grep -q "PATTERN";then echo $commit;fi;
done

Вы можете изменить echo $commit на git log -1 --show-notes $commit.

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