2009年3月6日 星期五

使用 getdelta 來減少下載至本地的原始碼大小

getdelta 是一款基於名為 deltup 的軟體,可以提供比較2個檔案的不同並進行存取,有點像 diff 和 patch ,但是是用於2進至檔案如 tar.gz 等壓縮檔。

deltup 很適合用於升級本地的原始碼,因為每個不同版本的更新,很可能只是有一小部份的程式碼不同,所以升級 foobar-0.1 至 foobar-0.2 只需要下載小小的 diff 檔案而不用下載完整的原始碼。
以 nano 為例

# emerge -u nano

These are the packages that would be merged, in order:

Calculating dependencies... done!

>>> Verifying ebuild manifests

>>> Emerging (1 of 1) app-editors/nano-2.1.9
>>> Downloading 'http://distfiles.gentoo.org/distfiles/nano-2.1.9.tar.gz'
Searching for a previously downloaded file in /usr/portage/distfiles

We have the following candidates to choose from
nano-2.1.7.tar.gz

The best of all is ... nano-2.1.7.tar.gz

Checking if this file is OK.

Trying to download nano-2.1.7.tar.gz-nano-2.1.9.tar.gz.dtu

--2009-03-07 09:12:03-- http://linux01.gwdg.de/~nlissne/deltup.php?have=nano-2.1.7.tar.gz&want=nano-2.1.9.tar.gz&url=http://www.nano-editor.org/dist/v2.1/nano-2.1.9.tar.gz&version=0.7&time=1236388323
Resolving linux01.gwdg.de... 134.76.13.21
Connecting to linux01.gwdg.de|134.76.13.21|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://dev.gentooexperimental.org/deltup/nano-2.1.7.tar.gz-nano-2.1.9.tar.gz.dtu [following]
--2009-03-07 09:12:05-- http://dev.gentooexperimental.org/deltup/nano-2.1.7.tar.gz-nano-2.1.9.tar.gz.dtu
Resolving dev.gentooexperimental.org... 81.93.240.53
Connecting to dev.gentooexperimental.org|81.93.240.53|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 88553 (86K) [application/octet-stream]
Saving to: `nano-2.1.7.tar.gz-nano-2.1.9.tar.gz.dtu'

100%[================================================================================>] 88,553 117K/s in 0.7s

2009-03-07 09:12:23 (117 KB/s) - `nano-2.1.7.tar.gz-nano-2.1.9.tar.gz.dtu' saved [88553/88553]

GOT nano-2.1.7.tar.gz-nano-2.1.9.tar.gz.dtu

Successfully fetched the dtu-file - let's build nano-2.1.9.tar.gz...

nano-2.1.7.tar.gz -> nano-2.1.9.tar.gz: OK
cleaning up
This dtu-file saved 1 MB (94%) download size.
* nano-2.1.9.tar.gz RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* checking ebuild checksums ;-) ... [ ok ]
* checking auxfile checksums ;-) ... [ ok ]
* checking miscfile checksums ;-) ... [ ok ]

我們可以很清楚看到,如果他有找到 xxx.dtu 檔案(2進至的diff檔),會自動下載該檔案
以此範例來看,我們總共減少了1MB的下載量

沒有留言: