2

通常、Subversion(クライアントでのsvn update、単方向)を使用してソフトウェアアプリケーションをクライアントにデプロイします。クライアントが中国にあり、サーバーがカナダにあるため、待ち時間が長い(大きなファイルのダウンロード速度が良い)ため、現在、クライアントの1つで問題が発生しています。Subversionは、非常に長い時間が経過すると、エラーが発生してタイムアウトするだけです。

私たちのアプリケーションには、たくさんの小さなファイル(.aspx、.configなど)といくつかの大きなファイル(.dll、.jpg)があり、合計で約100mb〜200mbになります。

私は現在、次のことを検討しています。

  1. サーバーでローカルsvnチェックアウトを実行します
  2. 結果をzip形式で圧縮する
  3. 大きなzipファイルを外部マシンにFTPまたはrsyncします
  4. 一時フォルダにあるファイルを解凍します。
  5. その一時フォルダーから通常のインストールフォルダーへのローカルrsyncを実行します。

より良い解決策はありますか?

  • 宛先の近くにSubversionミラーを設定しますか?(月に数時間しか必要ありませんが、見つけるのは難しいかもしれません)
  • 別のバージョン管理システムを使用していますか?(gitは待ち時間の長い接続に適していますか)?
  • すべてのデータを送信する代わりに、宛先で再適用されるSubversionパッチ(バイナリファイルを含む)をパッケージ化する方法はありますか?
  • DropBox(Amazon S3を使用)を使用してファイルを一時フォルダーに転送する方が良いでしょうか?
4

3 に答える 3

4

試してみるまでは、小さなファイルのツリー全体に対して rsync をノックしないでください。単一のファイルごとに往復するのではなく、パイプライン化されているため、データセット全体で他のものと同じくらい高速である必要があります。(TCP が高遅延リンク上でフレームを順序付けられたパケットに再構成できるのと同じ速さです。)

ラウンドトリップを回避する方法の説明については、rsync の仕組みを確認してください。

于 2010-01-18T17:44:39.213 に答える
2

すべてのファイルにわたるすべての変更の UNIX スタイルのパッチを作成できます。そして、それをzipファイルに転送するだけです。

于 2010-01-18T17:16:10.073 に答える
0

git (おそらく git-svn を使用) を使用して転送を処理できます。ファイルバージョンの違いを移動するのに驚くほど効率的です。

それ以外の場合は、xdiff バイナリ diff ツールを使用できます。

于 2010-01-18T17:49:52.253 に答える