| '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 |