2

我们通常使用 Subversion(客户端上的 svn 更新;单向)将我们的软件应用程序部署到我们的客户端。由于延迟高(大文件下载速度很好),我们的一位客户目前遇到问题,因为他们在中国,而我们的服务器在加拿大。Subversion 只是在很长一段时间后因错误而超时。

我们的应用程序有很多小文件(.aspx、.config 等)和一些较大的文件(.dll、.jpg),总大小约为 100mb-200mb。

我目前正在考虑执行以下操作:

  1. 在服务器上执行本地 svn checkout
  2. 压缩结果
  3. FTP或rsync大zip文件到外机
  4. 将文件解压缩到临时文件夹中。
  5. 从该临时文件夹执行本地 rsync 到我们的典型安装文件夹。

有没有更好的解决方案?

  • 设置一个靠近目的地的 Subversion 镜像?(我每个月只需要几个小时,但可能很难找到)
  • 使用另一个版本控制系统?(对于高延迟连接,git 是否更好)?
  • 有没有办法打包颠覆补丁(包括二进制文件)以在目的地重新应用而不是发送所有数据?
  • 使用 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 二进制差异工具。

于 2010-01-18T17:49:52.253 回答