How to DEFLATE with a command line tool to extract a git object?
I'm looking for a command line wrapper for the DEFLATE algorithm.
I have a file (git blob) that is compressed using DEFLATE, and I want to uncompress it. The gzip command does not seem to have an option to directly use the DEFLATE algorithm, rather than the gzip format.
Ideally I'm looking for a standard Unix/Linux tool that can do this.
edit: This is the output I get when trying to use gzip for my problem:
$ cat .git/objects/c0/fb67ab3fda7909000da003f4b2ce50a53f43e7 | gunzip
gzip: stdin: not in gzip format
Something like the following will print the raw content, including the "$type $length\0" header:
perl -MCompress::Zlib -e 'undef $/; print uncompress(<>)' \
< .git/objects/27/de0a1dd5a89a94990618632967a1c86a82d577
You can do this with the OpenSSL command line tool:
openssl zlib -d < $IN > $OUT
Unfortunately, at least on Ubuntu, the zlib
subcommand is disabled in the default build configuration (--no-zlib
--no-zlib-dynamic
), so you would need to compile openssl
from source to use it. But it is enabled by default on Arch, for example.
Edit: Seems like the zlib
command is no longer supported on Arch either. This answer might not be useful anymore :(
pythonic one-liner:
$> python -c "import zlib,sys;print \
repr(zlib.decompress(sys.stdin.read()))" < $IN