diff options
Diffstat (limited to 'deps/npm/node_modules/@npmcli/git/lib/revs.js')
-rw-r--r-- | deps/npm/node_modules/@npmcli/git/lib/revs.js | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/deps/npm/node_modules/@npmcli/git/lib/revs.js b/deps/npm/node_modules/@npmcli/git/lib/revs.js new file mode 100644 index 0000000000..5744731872 --- /dev/null +++ b/deps/npm/node_modules/@npmcli/git/lib/revs.js @@ -0,0 +1,24 @@ +const pinflight = require('promise-inflight') +const spawn = require('./spawn.js') +const LRU = require('lru-cache') + +const revsCache = new LRU({ + max: 100, + maxAge: 5 * 60 * 1000, +}) + +const linesToRevs = require('./lines-to-revs.js') + +module.exports = (repo, opts = {}) => { + if (!opts.noGitRevCache) { + const cached = revsCache.get(repo) + if (cached) + return Promise.resolve(cached) + } + + return pinflight(`ls-remote:${repo}`, () => + spawn(['ls-remote', repo], opts) + .then(({stdout}) => linesToRevs(stdout.trim().split('\n'))) + .then(revs => (revsCache.set(repo, revs), revs)) + ) +} |