Получить информацию о Git Word-Diff слияния строк
Я пытаюсь построить историю файла, и у меня странное поведение git diff
/git log
... команды при использовании --word-diff
Режим. Это иногда объединяет несколько строк.
Например, если старая версия файла была:
r = ioctl(hdev->control, VHOST_SET_LOG_BASE,
(uint64_t)(unsigned long)hdev->log);
его преобразуют в:
r = hdev->vhost_ops->vhost_call(hdev, VHOST_SET_LOG_BASE, hdev->log);
(Эти строки из этого проекта распространяются с лицензией GPL)
просто git diff
дает мне нормальный вывод (2 строки удалены, одна добавлена), но git diff --word-diff
дает мне это:
r = [-ioctl(hdev->control,-]{+hdev->vhost_ops->vhost_call(hdev,+}
VHOST_SET_LOG_BASE, [-(uint64_t)(unsigned long)hdev->log);-]{hdev->log);}
Тот же вывод будет выпущен в --word-diff=porcelain
режим, это не ошибка текстового режима.
Поскольку я пытаюсь получить оперативную историю файла, мои методы не работают на этом фрагменте git log
, я вижу это git
на самом деле показывает лучший читаемый человеком разный, потому что две строки после редактирования стали одной строкой, но это не очевидно для скриптов. Так,
- Это поведение предназначено? (git 1.9.1)
- Если это так, есть ли способ получить какой-то дополнительный вывод об этих слияниях (и, если есть, unmerges)? Это не так, как их найти другим способом?
1 ответ
Это похоже на то, что --word-diff
должен делать. Git разбивает файлы на слова (с " " в качестве разделителя) и показывает минимальные порции. Вы можете видеть, что ваши строки всегда разделены пробелами.
Попробуйте использовать --word-diff-regex=<regex>
с конечными символами.
Что касается информации о слияниях, то здесь может пригодиться git blame.