2013-01-31 101 views
3

據我所知,git通過保存更改的行來存儲修訂版。運行文檔文檔(如文檔或羅嗦的LaTeX文件)通常會有很長的行,或者在80個字符後被強行破壞。當一個單詞發生變化時,它會導致git庫存在變化的線條上的巨大差異。逐字git修訂版

是否有可能通過單詞而不是行來使git工作?我知道有git diff --color-words以更漂亮的格式輸出更改的單詞。但這並不影響這些更改如何在內部存儲。

我也知道通過重新格式化文檔以使其更適合版本化的做法,在每個句子之後開始一個新行。但是,這會嚴重干擾大多數文件的格式,而只能將問題縮小爲句子長度。

換句話說,我可以在創建修訂時將git配置爲將空格字符替換爲換行符嗎?

回答

2

對於這個問題沒有更好的解決方案,而不是把你的段落分成幾行。

我知道有git diff --color-words以更漂亮的格式輸出改變的 單詞。但這並不影響內部存儲這些更改的方式。

This answer對與git的乳膠處理,具有this one一起使用latexdiff Git的好建議。

+1

請注意,如果您使用(great)'latexdiff'工具,在[格式化您的代碼]時應該小心(http://w3.pppl.gov/~hammett/comp/tex/latexdiff.html) 。在命令參數之間使用** no **換行符尤其重要。例如。當我開始時,我有很多'\ frac {...} \ n {...}'這完全破壞了'latexdiff'。相反,使它成爲'\ frac {...} {\ n ...}'(注意換行符的位置)。 –

4

Git不存儲差異。 SVN的確如此。 Git通常存儲完整的blob。它還可以打包以節省空間(運行git gc或向遠程設備註入時),但同樣,由於它使用二進制增量格式,因此不是基於行的。唯一令人討厭的是當你注意到diff-ouptut。但這與Git存儲數據的方式無關。您可能需要閱讀ProGit的Is the git binary diff algorithm (delta storage) standardized?,pack-file specs9.29.4