git-log с предложением «ИЛИ» или - как объединить выходы git-log - PullRequest
1 голос
/ 08 декабря 2010

В настоящее время я пытаюсь выбрать функцию из ствола проекта OSS в развилку. В обоих репозиториях используется git, и у меня есть ствол, импортированный в ветвь как ветвь, поэтому все должно быть легко и просто.

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

Чтобы сгенерировать список коммитов, я должен начать с cherry-pick. Я определил две команды git-log для запуска:

git log --branch project-trunk **/*Foo* 

Это предназначено, чтобы дать мне журнал для любого файла со словом "Foo" в ветке project-trunk. Это довольно хорошая отправная точка, но я обнаружил, что есть другие коммиты, которые имеют отношение: к счастью, они обычно имеют идентифицирующую работу в журнале коммитов. Поэтому, чтобы найти их, я использую:

git log --branch project-trunk --grep Bar

Это дает мне любые журналы на ветке project-trunk, которые содержат работу "Бар".

Проблема в том, что мне действительно нужен главный список, упорядоченный в хронологическом порядке, содержащий объединение обеих этих команд. Я прочитал руководство git rev-list, но не вижу способа сделать то, что хочу.

Возможно ли объединить два отдельных условия, как это? А если нет, то есть ли простой способ объединить вывод двух команд git-log в хронологическом порядке?

1 Ответ

0 голосов
/ 08 декабря 2010

Я потерял терпение и, немного поиграв, я нашел следующее:

(git rev-list --grep=Bar heads/project-trunk; git rev-list heads/project-trunk **/*Foo*) | git log --stdin --no-walk --reverse

Если кто-то может улучшить это, дайте мне знать!Надеюсь, это поможет кому-то еще в будущем ...

...