Я пытаюсь построить поточную историю файла, и у меня возникло странное поведение в git diff
/git log
... командах при использовании режима --word-diff
. Он иногда объединяет некоторые строки.Получите информацию о линиях слияния строк git 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);
(Эти строки из this проекта распространяется с лицензией GPL)
Simple 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
на самом деле показывает мне лучший человеко-читаемый diff, потому что две строки после редактирования стали одной строкой, но это не очевидно для скриптов. Таким образом,
- Предполагается ли такое поведение? (git 1.9.1)
- Если это так, есть ли способ получить дополнительную информацию об этих слияниях (и, если есть, не работает)? Это не так, как найти их по-другому?
http://www.git-scm.com/docs/git-diff –
Вы имеете в виду слово "[: space:] + \ n" как слово? Как я понимаю, \ n игнорируются как часть слова. –
Я хочу рассматривать «[: пространство:] + \ n" как разделитель слов. Таким образом, строки ваших файлов станут «словами» для git. –