pull-git-remote-helper

use pull-streams to make gitremote-helpers(1)

Usage no npm install needed!

<script type="module">
  import pullGitRemoteHelper from 'https://cdn.skypack.dev/pull-git-remote-helper';
</script>

README

pull-git-remote-helper

Make a git remote helper that integrates with git's internal objects.

Example

#!/usr/bin/env node

var toPull = require('stream-to-pull-stream')
var pull = require('pull-stream')
var gitRemoteHelper = require('.')

var repo = {
  refs: pull.empty,
  hasObject: function (hash, cb) { cb(null, false) },
  getObject: function (hash, cb) { cb(null, null) },
  update: function (readUpdates, readObjects) {
    pull(
      readUpdates,
      pull.drain(function (update) {
        console.error('Updating ' + update.name + ' to ' + update.new)
      })
    )
    readObjects(null, function next(end, object) {
      if (end === true) return
      if (end) throw end
      pull(
        object.read,
        pull.collect(function (err, bufs) {
          if (err) throw err
          var buf = Buffer.concat(bufs, object.length)
          console.error('Got object', object, buf)
          readObjects(null, next)
        })
      )
    })
  }
}

pull(
  toPull(process.stdin),
  gitRemoteHelper(repo),
  toPull(process.stdout)
)

API

gitRemoteHelper(repo)

Create a through-stream for the stdio of a git-remote-helper

TODO

  • Handle shallow and unshallow fetch

License

Fair License