21

私はSubversionを会社のエンジニアリングドキュメントストレージリポジトリとして管理しています。かなりうまく機能していますが、MS Office 2007形式がSubversionによってどのように処理されるか(処理される必要があるか)について質問があります。

Subversionがsvn:mime-typeプロパティapplication /octet-streamを適用した作業コピーのExcel2007スプレッドシート(​​拡張子.xlsx)を見ています。これは、Subversionがバイナリとして扱われることを意味しますよね?

新しいMSOfficeドキュメント形式がSubversionによって効率的に保存されることを期待していました。私の理解では、バイナリファイルの完全なコピーは、そのファイルのコミットごとに作成されますが、ファイルがテキストの場合、ファイルに小さな変更を加えると、リポジトリに少量の追加データが追加されます(少なくとも典型的な状況)。

XMLの詳細はよくわかりませんが、XMLファイルはテキストであるため、Subversionで効率的に保存できると思いました。

MS Office OpenXMLドキュメントが効率的に保存されるようにSubversionを構成することは可能ですか?

フォローアップ(2009-11-09) :Office 2003 XMLドキュメント形式(Excel: XML Spreadsheet 2003 ; Word:WordXMLドキュメント。損失に関する警告があります)を使用して、Officeドキュメントをプレーンテキストとして保存できることがわかりました。書式設定の、しかし私はまだ書式設定の顕著な損失に遭遇していません。

4

4 に答える 4

28

ウィキペディアのOpenXML記事から:

Office Open XMLファイルは、XMLドキュメントやその他のリソースを含むZIP互換のOPCパッケージです。

つまり、OpenXMLファイルは、実際にはXMLファイルを含むzipファイルです。圧縮または暗号化はデータを「スクランブル」し、リビジョン間のデルタを生成するSubversionの機能を妨害します。これはとは関係ありませんsvn:mimetype。Subversionは、デルタを生成するときにすべてのファイルをバイナリと見なします。

オランダ語では、「測定は知っている」という言葉があります。以下のグラフは、500KのOpenXMLドキュメントをSVN 1.6リポジトリ(リビジョン1)にインポートした実験の結果を示しています。次に、別のドキュメントから段落を追加し、保存してコミットしました。これを5回繰り返しました(リビジョン2から6)。

ご覧のとおり、段落を追加するだけの新しいdocxリビジョンをコミットすると、約150Kのディスク領域が必要になります。これは、バージョン管理システムを使用せずに各リビジョンのコピーを保存するよりもはるかに効率的です。

また、docxの各リビジョンを解凍して、個別のテストリポジトリで実験を繰り返しました。ご覧のとおり、ドキュメントリビジョンの保存は、圧縮されていない場合ははるかに効率的です。Subversion自体のデータ圧縮がzipとほぼ同じくらい効率的であることを確認することも興味深いです。圧縮されていないdocxの最初のリビジョンをsubversionに保存すると、元のdocxとほぼ同じスペースが必要になります。

YMMV。

于 2009-08-24T10:46:46.080 に答える
9

Subversionはバイナリファイルを非常にうまく処理します。コミットごとに完全なコピーを保存するのではなく、効率的なバイナリ差分のみを保存します。

これに関するFAQを参照してください。

于 2009-08-24T06:12:33.043 に答える
3

残念ながら、現在Subversionでこれを行うことはできませんが、これについてはいくつかの議論があります。

http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=651443

于 2009-08-24T06:10:04.483 に答える
-2

テキストエディタでOpenXMLファイルを開こうとしたことがありますか?

簡単に言うと、テキストではなく、バイナリのままです。ですから、Subversionにそれを別の方法で処理させることはできません。

于 2009-08-24T06:00:29.900 に答える