我正在尝试构建文件的逐行历史记录,并且在使用模式时在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 许可证分发)
Simplegit diff
给了我正常的输出(删除了 2 行,添加了 1 行),但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)
- 如果是,有没有办法获得关于这些合并的一些额外输出(如果有,取消合并)?不是,如何通过其他方式找到它们?