2011-10-14 13 views
8

誰かがこれを既に済まされているに違いないと思われますが、私が探している最終製品を見つけることができません。散文のバージョン管理

テキストのバージョン管理システムを使用するのは面倒です。それぞれの文の最後に改行文字が必要で、長い文の途中でも改行文字が必要です。 gitソースを見ると、'\n'をチェックするいくつかのルーチンを変更することで、'\n'やパターン'\\.\s'と一致するようにする必要があります。しかし、それは細心の注意を払って行う必要がある作業であるか、またはかなりひどく壊れていることが分かります。

すでにこれを行っている誰かを知っていますか?または他の選択肢?

ありがとうございます!

+1

私はこのためにMediaWikiを使用することをお勧めします。それは魅力のようなサービス(バージョン管理の散策)をしています。それは確かにPHPアプリケーションですが、それは価値があります。 – brandizzi

+0

gitは散文のために働きます。 gitは、それらを自然に持たない場合、短い行や余分な改行を必要としません。 –

+0

あなたの懸念事項はきれいな差分を表示しているのか、効率的な圧縮を行っていますか?後者には大丈夫です。それはまたあなたの問題の多くを処理する単語差分を行うことができますし、必要であれば差分を外部のdifftoolに渡すことさえできます。 – Cascabel

答えて

3

任意のバージョン管理システムは、散文を処理できる必要があります。問題はそれがいかに効率的に行うことができるかということです。

のようなコマンドは、2つのバージョンのファイルの違いを表示するコマンドです。ファイルが非常に長い行(すなわち、'\n'文字の間の多くの文字)のテキストで構成されている場合、意味の違いを表示するのが難しい場合があります。 1文字の変更だけで2つの5000文字の行が表示されることがあります。

しかし、必ずしもそうであるとは限りませんgitファイルを保存します。私はgitの内部ストレージフォーマットに精通しているわけではありませんが、私の理解では、バイナリファイルの場合、'\n'文字のない多くのメガバイトのデータがあることが妥当です。

古いバージョン管理システム(SCCS、RCS)の中には、バージョンごとに行単位で差異を格納しているものがあることに注意してください。しかし、そのようなシステムの場合でも、最悪の場合のは、各バージョンのフルコピーといくつかのオーバーヘッドを保存しています。システムはまだ正常に動作するはずです。

git diff --word-diffは、バージョンの比較の問題を少なくとも部分的に回避する必要があることに注意してください。

+0

非常に有用な 'git diff -word-diff'についてのメモとして、この機能はv1.7.2で追加されましたが、以前のバージョンでは' git diff --color-words'を使用することができます。 –

+0

すべての応答ありがとう。私はJefromiのコメントが特に有用であることを発見しました。そして、Keithの答えと関連して、私は私が欲しいものを理解していると思います。私はdiffとストレージをどのようにしているのか気にしない。diffを表示するのが賢明であることを望む。ソース・テキストがハード・ラップされていない場合(ソースで行区切りがない場合)、各文(ピリオド区切り)をdiff表示用の別の単位として扱います。 – dgorur