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