Как эффективно просматривать обновления / переустановки подмодулей git? - PullRequest
3 голосов
/ 08 мая 2020

В нашем проекте используется подмодуль git для закрепления одной из зависимостей нашей библиотеки.

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

Когда кто-то переустанавливает подмодуль, я вижу это только в git diff родительского репо:

--- a/mysubmodule
+++ b/mysubmodule
@@ -1 +1 @@
-Subproject commit abc12345abc12345abc12345abcd12345abc1234
+Subproject commit efg67890efg67890efg67890efg67890efg67890

Это не очень полезно. Когда я git diff эти коммиты в подмодуле, я получаю много вывода, включая все восходящие изменения, а наши коммиты находятся наверху между ними. Я не могу легко судить, вносило ли какое-то разрешение конфликтов, выполненное нашими собственными коммитами, какие-либо ошибки.

Как я могу эффективно проверить код изменений в подмодуле?

1 Ответ

5 голосов
/ 08 мая 2020

Используйте git range-diff. Он был разработан именно для этой цели, чтобы просмотреть диапазоны фиксации.

Если в репозитории родительских фиксаций есть:

-Subproject commit abc123
+Subproject commit efg678

, тогда cd в свой подмодуль и запустите (обратите внимание на тройные точки ...):

git range-diff abc123...efg678

Пример вывода объяснен:

git range-diff output explained

  • Каждая строка фиксации показывает SHA фиксации до и после перебазирования.
  • зеленые строки вверху показывают новые коммиты в исходном проекте . Прочтите их, если хотите узнать, что изменилось в восходящем потоке с момента последнего перебазирования.
  • Желтый строки показывают фиксируется без изменений при перебазировании.
  • Красные строки - это коммиты, которые были удалены как часть вашего разрешения конфликта (например, если вы внесли один из своих патчей поверх основного проекта).
  • Зеленые строки - это коммиты, которые были добавлены как часть вашего разрешения конфликта (например, если была необходима новая настройка, чтобы ваш проект работал с новым исходным кодом).
  • Красно-зеленые строки показывают коммиты, которые были изменены как часть перебазирования (например, когда при разрешении конфликта пришлось изменить вашу фиксацию поверх, чтобы работать с измененным исходным кодом) .

    Когда они появляются, они также включают обычную разницу, чтобы вы могли проверить разницу.

В рамках вашего обзора вам следует особенно проверить, добавлено ли / удалено ваших коммитов сверху посмотрите вправо (или если некоторые из них случайно упали), и проверьте, правильно ли выглядит разрешение конфликта (красно-зеленые линии).

...