Учитывая точную строку темы фиксации, я хочу знать, содержит ли ветка фиксацию с этой темой.
Что у меня сейчас есть: git log --format = "%s" -F --grep = "$msg" "$branch" | grep -Fq --max-count=1 -- "$msg"
т.е. выполните поиск в журнале с помощью grep с фиксированной строкой и распечатайте тему. Затем найдите этот объект с той же фиксированной строкой и остановитесь на первом совпадении.
2-й grep требуется, потому что git log --grep
может найти шаблон в любом месте сообщения фиксации (например, Fixes "$msg"
)
Однако у этого есть обратная сторона: кажется, что он всегда проходит всю историю этой ветки, что занимает довольно много времени.
В качестве теста я запустил git log --format = "%s" -F --grep = "$msg" "$branch" | grep -Fq --max-count=1 -- "$msg"
и git log --format = "%s" -F --grep = "$msg" "$branch"
, и они оба заняли одинаковое время, хотя фиксация для grep для была найдена / напечатана очень быстро (для 2-го)
Итак, есть ли способ напрямую найти фиксацию в ветке по заданному субъекту (используя фиксированные строки, поскольку $msg
исходит из другой команды и может содержать символы, подобные регулярным выражениям) быстрее или, по крайней мере, ускорить выход моего log-grep-pipe (на успех)?
🤔 А знаете ли вы, что...
Bash позволяет использовать условные операторы, циклы и функции в скриптах.