git's smart fetch-pack protocol
git's smart fetch pack protocol (the one that
upload-pack on the server).
can be used to download packfiles (fetch or clone!) or to list remote branches.
var net = require'net'fs = require'fs'var gitclient = require'git-fetch-pack'transport = require'git-transport-protocol'load = require'git-fs-repo'walk = require'git-walk-refs'load'/path/to/repo/.git'var refs = gitrefshashes = refsmap return xhashtcp = netconnecthost: 'github.com' port: 9418client// given a want(ref, ready) function and a stream// of all of the commits the repo has in reverse// chronological order, we can negotiate a sweet// packfile from the remote!ifrefname === 'refs/heads/master'return readytruereturn readyfalseclient = gitclient'git://github.com/chrisdickinson/plate.git'wantwalkgitfind hashes// output ref data from the remote server! `refs`// is a readable stream.clientrefson'data' console.log// pipe client to the transport and back to client.clientpipetransporttcppipeclient// when we get packfile data, it'll come out of this// readable stream.clientpackpipefscreateWriteStream'client-output'
create a client for communicating with
hostinfo that uses
to determine which branches to ask for, and can provide a list of already-present
by providing the
want_function argument (which takes a
ref object and a
ready callback) but no others, you may emulate a
by additionally providing a
have_stream (usually using git-walk-refs), you can emulate a
capabilities, you enable the ability to blow your foot off, mostly; since by default this module does not support either side-band protocol.
"hash": "git hash""name": "refs/heads/master" // for example"commit": null | "hash" // for annotated tags
// do you want this ref object?readytrue // sure doready || readyfalse || ready'' // sure don't.
A readable stream of packfile data.
A readable stream of remote references.