'use strict'
|
|
const debug = require('debug')('lint-staged:git')
|
const execa = require('execa')
|
|
/**
|
* Explicitly never recurse commands into submodules, overriding local/global configuration.
|
* @see https://git-scm.com/docs/git-config#Documentation/git-config.txt-submodulerecurse
|
*/
|
const NO_SUBMODULE_RECURSE = ['-c', 'submodule.recurse=false']
|
|
const GIT_GLOBAL_OPTIONS = [...NO_SUBMODULE_RECURSE]
|
|
module.exports = async function execGit(cmd, options = {}) {
|
debug('Running git command', cmd)
|
try {
|
const { stdout } = await execa('git', GIT_GLOBAL_OPTIONS.concat(cmd), {
|
...options,
|
all: true,
|
cwd: options.cwd || process.cwd(),
|
})
|
return stdout
|
} catch ({ all }) {
|
throw new Error(all)
|
}
|
}
|
|
// exported for tests
|
module.exports.GIT_GLOBAL_OPTIONS = GIT_GLOBAL_OPTIONS
|