Commit 9f6b7a97b920fe19a6c5b5cde35a13230b4e1b9a
Handle more capabilities
Charles Lehner committed on 10/11/2016, 2:09:13 AMParent: 946fb8a79ab4d51e97cb324addd262ca482fa7d1
Files changed
index.js | changed |
lib/pkt-line.js | changed |
index.js | |||
---|---|---|---|
@@ -58,8 +58,11 @@ | |||
58 | 58 … | } | |
59 | 59 … | } | |
60 | 60 … | ||
61 | 61 … | // upload-pack: fetch to client | |
62 … | +// references: | ||
63 … | +// git/documentation/technical/pack-protocol.txt | ||
64 … | +// git/documentation/technical/protocol-capabilities.txt | ||
62 | 65 … | function uploadPack(read, repo, options) { | |
63 | 66 … | /* multi_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress | |
64 | 67 … | * include-tag multi_ack_detailed | |
65 | 68 … | * agent=git/2.7.0 */ | |
@@ -81,8 +84,11 @@ | |||
81 | 84 … | var hasWants | |
82 | 85 … | var gotHaves | |
83 | 86 … | ||
84 | 87 … | function onCaps(caps) { | |
88 … | + if (options.verbosity >= 2) { | ||
89 … | + console.error('client capabilities:', caps) | ||
90 … | + } | ||
85 | 91 … | } | |
86 | 92 … | ||
87 | 93 … | function readWant(abort, cb) { | |
88 | 94 … | if (abort) return | |
@@ -391,21 +397,31 @@ | |||
391 | 397 … | function receivePack(read, repo, options) { | |
392 | 398 … | var sendRefs = receivePackHeader([ | |
393 | 399 … | agentCap, | |
394 | 400 … | 'delete-refs', | |
401 … | + 'quiet', | ||
395 | 402 … | 'no-thin', | |
396 | 403 … | ], repo.refs(), null) | |
397 | 404 … | var done = multicb({pluck: 1}) | |
398 | 405 … | ||
406 … | + function onCaps(caps) { | ||
407 … | + if (options.verbosity >= 2) { | ||
408 … | + console.error('client capabilities:', caps) | ||
409 … | + } | ||
410 … | + } | ||
411 … | + | ||
399 | 412 … | return pktLine.encode( | |
400 | 413 … | cat([ | |
401 | 414 … | // send our refs | |
402 | 415 … | sendRefs, | |
403 | 416 … | pull.once(''), | |
404 | 417 … | function (abort, cb) { | |
405 | 418 … | if (abort) return | |
406 | 419 … | // receive their refs | |
407 | - var lines = pktLine.decode(read, options) | ||
420 … | + var lines = pktLine.decode(read, { | ||
421 … | + onCaps: onCaps, | ||
422 … | + verbosity: options.verbosity | ||
423 … | + }) | ||
408 | 424 … | pull( | |
409 | 425 … | lines.updates, | |
410 | 426 … | pull.collect(function (err, updates) { | |
411 | 427 … | if (err) return cb(err) |
lib/pkt-line.js | ||
---|---|---|
@@ -73,12 +73,15 @@ | ||
73 | 73 … | var args = util.split3(line.toString('ascii')) |
74 | 74 … | var args2 = util.split2(args[2], '\0') |
75 | 75 … | var caps = args2[1] |
76 | 76 … | if (caps) { |
77 | - if (options.verbosity >= 2) | |
78 | - console.error('update capabilities:', caps) | |
79 | - if (options.onCaps) | |
80 | - options.onCaps(caps.split(' ')) | |
77 … | + if (options.onCaps) { | |
78 … | + var capsSet = {} | |
79 … | + caps.split(' ').forEach(function (cap) { | |
80 … | + capsSet[cap] = true | |
81 … | + }) | |
82 … | + options.onCaps(capsSet) | |
83 … | + } | |
81 | 84 … | } |
82 | 85 … | cb(null, { |
83 | 86 … | old: rev(args[0]), |
84 | 87 … | new: rev(args[1]), |
@@ -95,10 +98,8 @@ | ||
95 | 98 … | if (line.length === 0) return cb(null, {type: 'flush-pkt'}) |
96 | 99 … | var args = util.split3(line) |
97 | 100 … | var caps = args[2] |
98 | 101 … | if (caps) { |
99 | - if (options.verbosity >= 2) | |
100 | - console.error('want capabilities:', caps) | |
101 | 102 … | if (options.onCaps) |
102 | 103 … | options.onCaps(caps) |
103 | 104 … | } |
104 | 105 … | cb(null, { |
Built with git-ssb-web