1
我正在尝试构建文件的逐行历史记录,并且在使用--word-diff
模式时我得到了奇怪的行为git diff
/git log
...命令。它有时会合并一些行。获取有关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许可证下发布)
简单git 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)
- 如果是这样,是否有办法获得关于这些合并的一些额外输出(以及如果存在,unmerges)?它不是,如何以其他方式找到它们?
http://www.git-scm.com/docs/git-diff –
你的意思是把“[:space:] + \ n”当成一个单词吗?据我所知,\ n被忽略作为一个单词的一部分。 –
我的意思是将“[:space:] + \ n”作为单词分隔符。所以你的文件的字符串将成为git的“单词”。 –