4

私の知る限り、git は変更された行を保存することでリビジョンを保存します。ドキュメントや冗長な LaTeX ファイルなどの実行中のテキスト ドキュメントは、通常、非常に長い行を含むか、80 文字を超えると強制的に改行されます。1 つの単語が変更されると、変更された行に大きな違いが生じ、git リポジトリが肥大化します。

行ではなく単語で git を機能させることは可能ですか? git diff --color-words変更された単語をよりきれいな形式で出力するものがあることを私は知っています。ただし、これは、これらの変更が内部で保存される方法には影響しません。

また、各文の後に新しい行を開始することにより、ドキュメントをバージョン管理に適したものにするためにドキュメントを再フォーマットする慣行も知っています。しかし、これはほとんどのドキュメントのフォーマットをひどく混乱させますが、それでも問題を文の長さに縮小するだけです.

つまり、リビジョンを作成するときに、改行文字ではなくスペース文字を考慮するように git を構成できますか?

4

2 に答える 2

4

Git は差分を保存しません。SVNはそうです。Git は通常、完全な BLOB を保存します。また、スペースを節約するためにパッキングも行います (実行時git gcまたはリモートへのプッシュ時) が、バイナリ デルタ形式を使用するため、これも行ベースではありません。煩わしい唯一のことは、差分出力に気づいたことです。しかし、それは Git がデータを保存する方法とは何の関係もありません。Is the git binary diff algorithm (delta storage) standardized?を読みたいと思うかもしれません。、パックファイルの仕様、およびProGit のセクション9.29.4 。

于 2013-01-31T12:48:06.313 に答える
2

この問題を解決するには、段落を複数の行に分割する以外に方法はありません。

変更された単語をよりきれいな形式で出力する git diff --color-words があることを私は知っています。ただし、これは、これらの変更が内部で保存される方法には影響しません。

この回答には、git で LaTeX を処理するための適切なアドバイスと、gitで使用latexdiffするためのアドバイスがあります。

于 2013-01-31T12:20:09.300 に答える