Skip to content

Commit af753a4

Browse files
committed
wip
1 parent 113366a commit af753a4

File tree

4 files changed

+20
-6
lines changed

4 files changed

+20
-6
lines changed

middleware.js

+12-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ var fs = require('fs')
22
var fp = require('fs').promises
33
var path = require('path')
44
var url = require('url')
5-
var { serveInfoRefs } = require('isomorphic-git/dist/for-node/isomorphic-git/internal-apis.js')
5+
var { serveInfoRefs, serveReceivePack } = require('isomorphic-git/dist/for-node/isomorphic-git/internal-apis.js')
66

77
var chalk = require('chalk')
88
var is = require('./identify-request.js')
@@ -49,9 +49,17 @@ function factory (config) {
4949
res.statusCode = 500
5050
res.end('Unsupported operation\n')
5151
} else if (is.push(req, u)) {
52-
const { gitdir } = parse.push(req, u)
53-
res.statusCode = 500
54-
res.end('Unsupported operation\n')
52+
const { gitdir, service } = parse.push(req, u)
53+
req.pipe(process.stdout)
54+
const { headers, response } = await serveReceivePack({ fs, gitdir, service })
55+
for (const header in headers) {
56+
res.setHeader(header, headers[header])
57+
}
58+
res.statusCode = 200
59+
for (const buffer of response) {
60+
res.write(buffer)
61+
}
62+
res.end('')
5563
}
5664
log(req, res)
5765
}

package-lock.json

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"buffer-equal-constant-time": "^1.0.1",
1818
"chalk": "^2.4.1",
1919
"daemonize-process": "^1.0.9",
20+
"figlet": "^1.2.4",
2021
"micro-cors": "^0.1.1",
2122
"minimisted": "^2.0.0",
2223
"tree-kill": "^1.2.0"

parse-request.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ function infoRefs (req, u) {
55

66
function pull (req, u) {
77
const gitdir = u.pathname.replace(/\/git-upload-pack$/, '').replace(/^\//, '')
8-
return { gitdir }
8+
return { gitdir, service: 'git-receive-pack' }
99
}
1010

1111
function push (req, u) {
1212
const gitdir = u.pathname.replace(/\/git-receive-pack$/, '').replace(/^\//, '')
13-
return { gitdir }
13+
return { gitdir, service: 'git-receive-pack' }
1414
}
1515

1616
module.exports = {

0 commit comments

Comments
 (0)