6

バイナリファイルをSVNに保存する方法はいくつかありますか? もしそうなら、それらは何ですか?また、ストレージ オプションを変更するにはどうすればよいですか?

バイナリ ファイルを SVN に保存する方法は 4 つあります。

  1. 圧縮 tar - インポート - エクスポート。
  2. タール - インポート - エクスポート。
  3. インポート・エクスポート。
  4. 効率的なチェックイン。

時間の効率化に最も役立つのはどれですか? また、これらのメソッドのいずれかを使用するように SVN を設定するにはどうすればよいですか?

ありがとう、オーデッド。


小さなサイズのバイナリ ファイルが多数あり、大きなサイズのファイルがいくつかあります。すべてが頻繁に変更されます。私は現在 CVS に取り組んでおり、まもなく SVN に切り替えます。バイナリを保存する方法について知りたいと思っていました。

Subversion のパフォーマンス チューニング (上記) を読んだところ、役に立つことがわかりましたが、例が作成されていなかったため、彼が提案した 4 つの方法のそれぞれを行う方法が正確にはわかりませんでした。

私の基本的な質問は、天気が良いかどうかです (そして、それらは何ですか?) 私の最初の考慮事項は、時間効率が良く、次にスペースです。ありがとう :)

4

2 に答える 2

3

これらのメソッドのいずれかを使用するように Subversion を設定するのではなく、ファイルをリポジトリに配置するときに使用するメソッドを指定します。そして、「メソッド」とは、あなたが言及した4つのいずれかを意味するのではなく、単に「インポート」または「コミット」することを意味します。新しいメソッドを保存するたびに、選択したメソッドについてSubversionに伝え続ける必要がありますそのファイルのリビジョンをリポジトリに追加します。

パフォーマンス チューニング Subversionを参照してください。

そこの説明からわかるように、「方法 1」を使用して tar に圧縮してから import を使用するには、自分ですべてのバイナリ ファイルを .tar ファイルに圧縮し、Subversion の import コマンドを使用してファイルをリポジトリに追加します。

また、注意点として、インポート コマンドはファイルを以前のリビジョンへのデルタとしてではなく、新しいファイルとして保存するため、大きなファイルへの変更がほとんどコミットされていない場合、時間効率は良くなりますが、スペース効率は良くない可能性があります。

Subversion 自体は、コミットとインポートのみを行います。コミットは既存のファイルの新しいリビジョンであり、一連のデルタ (または新しいファイルの最初のリビジョン) として保存され、インポートは単なる新しいファイルです。それ以外はすべて自分で行う必要があります。

バイナリ ファイルがときどき変更されるだけの場合は、さらに調べる価値があるかもしれませんが、定期的に変更される場合は、Subversion を通常どおりコミット コマンドで使用することをお勧めします。

また、バイナリ ファイルに関する一般的なアドバイスは、バイナリ ファイルの代わりに、可能であればそれらのバイナリ ファイルを生成するソース コードを保存し、ツールを再実行して実際のバイナリ ファイルを再現することです。 . バイナリ ファイルの複製に時間や容量が必要な場合にのみ、問題のバイナリ ファイルも保存します。

バイナリ ファイルには、実際には比較に適していないという問題があります。そのため、開発者 a と b の両方が最新バージョンを取得し、開発者 b が同じことを試みる前に開発者 a が新しいリビジョンをコミットすると、ある種の競合が発生します。開発者 B には、自分で変更を把握しようとする以外に選択肢がない場合があります。


編集:COMMITとIMPORTの意味を強調させてください。

主な違いは、COMMIT は、既にファイルがリポジトリにあると仮定して、作業コピー内のファイルを以前のリポジトリ バージョンと比較しようとし、変更のみを保存することです。これらの違いを解決するには、時間とメモリが必要ですが、通常、リポジトリに小さなリビジョンのチェンジセットが作成されます。つまり、Subversion サーバーのディスク容量は、IMPORT コマンドよりも影響が少なくなります。

一方、IMPORTは、新しいファイルを与えて「前のファイルは忘れて、このファイルを保存してください」と言ったかのように新しいファイルをインポートします。したがって、違いを解決するために時間やメモリが費やされることはありません。 、ただし、リポジトリ内の結果の変更セットは大きくなります。つまり、Subversion サーバーのディスク容量は、COMMIT コマンドよりも影響を受けますが、IMPORT は通常、はるかに高速に実行されます。

強制したいその他のワークフローは、Subversion の外部で実行する必要があります。これには、オペレーティング システムで使用可能な TAR コマンドと圧縮オプションが含まれます。「方法 1」を使用する場合は、Subversion に渡す前に、インポートするファイルを手動で単一の .tar ファイルに圧縮する必要があります。Subversion にそのようなことを依頼することはできません。もちろん、プロセスをある程度自動化するスクリプト ファイルを作成することもできますが、それでも Subversion の問題ではありません。

Subversion ワークフローに課す余分な作業に見合った価値があるかどうかを判断するために、これを使っていくつかの本格的なテストを行います。

于 2009-07-20T06:27:05.193 に答える
1

あなたの状況を詳しく説明していただけますか?

すべてが一緒に変更されるいくつかの小さなバイナリ ファイルがありますか? 個別に変更されるいくつかの大きなバイナリ ファイルですか? ファイルは頻繁に変更されますか?

デフォルトでは十分ではないことに実際に気付きましたか? 私はいつも通常と同じ方法でバイナリファイルを追加しただけで、うまくいくことがわかりました。他のパフォーマンスの問題と同様に、正当な理由がない限り、物事を複雑にしようとはしません。その場合は、その理由をお知らせください。

于 2009-07-20T06:28:35.860 に答える