PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` function oneCall(fn) { var done = false; return function () { if (done) return; done = true; return fn.apply(this, arguments); }; } module.exports = findCommon; function findCommon(repo, a, b, callback) { callback = oneCall(callback); var ahead = 0, behind = 0; var aStream, bStream; var aCommit, bCommit; if (a === b) return callback(null, ahead, behind); repo.logWalk(a, onAStream); repo.logWalk(b, onBStream); function onAStream(err, stream) { if (err) return callback(err); aStream = stream; aStream.read(onA); } function onBStream(err, stream) { if (err) return callback(err); bStream = stream; bStream.read(onB); } function onA(err, commit) { if (!commit) return callback(err || new Error("No common commit")); aCommit = commit; if (bCommit) compare(); } function onB(err, commit) { if (!commit) return callback(err || new Error("No common commit")); bCommit = commit; if (aCommit) compare(); } function compare() { if (aCommit.hash === bCommit.hash) return callback(null, ahead, behind); if (aCommit.author.date.seconds > bCommit.author.date.seconds) { ahead++; aStream.read(onA); } else { behind++; bStream.read(onB); } } }