aboutsummaryrefslogtreecommitdiff
path: root/git.js
diff options
context:
space:
mode:
Diffstat (limited to 'git.js')
-rw-r--r--git.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/git.js b/git.js
new file mode 100644
index 0000000..cd9efe3
--- /dev/null
+++ b/git.js
@@ -0,0 +1,27 @@
+#!/usr/bin/env node
+
+var spawn = require('child_process').spawn
+
+// Returns a process running `git ls-remote <url>` that calls `with_ref` on
+// each parsed reference. The url may point to a local repository.
+function ls (url, with_ref) {
+ var ls = spawn('git', ['ls-remote', url])
+ ls.stdout.on('data', function (lines) {
+ lines.toString().split('\n').forEach(function (line) {
+ if (!line || line === '') {
+ return
+ }
+ line = line.split('\t')
+ var sha = line[0]
+ var branch = line[1]
+ if (sha.length !== 40) {
+ console.warn('[git ls-remote] expected a 40-byte sha: ' + sha + '\n')
+ console.warn('[git ls-remote] on line: ' + line.join('\t'))
+ }
+ with_ref(sha, branch)
+ })
+ })
+ return ls
+}
+
+module.exports = {ls: ls}