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的「單詞」。 –