Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/monmohan/xferspdy
Xferspdy provides binary diff and patch library in golang. [Mentioned in Awesome Go, https://github.com/avelino/awesome-go]
https://github.com/monmohan/xferspdy
diff fingerprint-generation golang
Last synced: about 1 month ago
JSON representation
Xferspdy provides binary diff and patch library in golang. [Mentioned in Awesome Go, https://github.com/avelino/awesome-go]
- Host: GitHub
- URL: https://github.com/monmohan/xferspdy
- Owner: monmohan
- License: bsd-3-clause
- Created: 2015-05-22T13:23:34.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2021-04-04T09:44:40.000Z (over 3 years ago)
- Last Synced: 2024-08-03T15:06:06.298Z (5 months ago)
- Topics: diff, fingerprint-generation, golang
- Language: Go
- Homepage:
- Size: 49 MB
- Stars: 100
- Watchers: 6
- Forks: 15
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go - xferspdy - Xferspdy provides binary diff and patch library in golang. (Also added to ) - ★ 63 (Utilities)
- awesome-go-extra - xferspdy - go]|93|12|3|2015-05-22T13:23:34Z|2021-04-04T09:44:40Z| (Utilities / Fail injection)
README
# xferspdy
This library provides binary diff and patch API in golang.
#### Supported today:
* Command line utilities to diff and patch binary files
* Library for fingerprint generation, rolling hash and block matching
* *NEW* : For large files, fingerprint generation automatically switches to parallel mode wherein multiple go routines are used concurrently. For files > 20 MB, there is an improvement of ~50% compared to sequential fingerprint generation.Reference :
[Rsync Algorithm] (https://rsync.samba.org/tech_report/node2.html)### Setup
* Need to have go installed, [golang downloads] (https://golang.org/dl/)
* Do go get`go get github.com/monmohan/xferspdy`
* Install the command line utilities
Run `go install ./...` from the _xferspdy_ directory
### Using the API
See [GoDoc](https://godoc.org/github.com/monmohan/xferspdy).
The docs also contain an example usage of the API.
### Using the fpgen, diff and patch CLI utilities:
The library also provides CLI wrappers on API.#### Example
* You can see the usage of any of these commands using `$ GOPATH/bin/ --help`* Lets say you have a binary file (e.g. power point presentation _MyPrezVersion1.pptx_).
* First generate a fingerprint of version 1
`$ GOPATH/bin/fpgen -file /MyPrezVersion1.pptx`
This will generate the fingerprint file _/MyPrezVersion1.pptx.fingerprint_.
* Lets say that the file was changed now (for example add a slide or image) and saved as _MyPrezVersion2.pptx_
* Now Generate a diff (*doesn't require original file*)`$ GOPATH/bin/diff -fingerprint /MyPrezVersion1.pptx.fingerprint -file /MyPrezVersion2.pptx`
It will create a patch file `/MyPrezVersion2.pptx.patch`
* Now patch the Version 1 file to get the Version 2
`$ GOPATH/bin/patch -patch /MyPrezVersion2.pptx.patch -base /MyPrezVersion1.pptx`* This will generate _/Patched_MyPrezVersion1.pptx_.
*This file would exactly be same as MyPrezVersion2.pptx.**NOTE:* diff and patch are also common utilities present on most distributions so its better to give explicit path to these binaries. for example use _$GOPATH/bin/diff_ and _$GOPATH/bin/patch_