await gitOutput()

in gitlab/src/utils.ts [262:311]


      await gitOutput(['fetch', 'origin'])
      const output = await gitOutput([
        'merge-base',
        'origin/' + targetBranch,
        'origin/' + sourceBranch
      ])
      return output.stdout.trim()
    }
    return ''
  } catch (e) {
    console.warn(
      `Failed to determine merge base for PR mode, falling back to regular scan: ${(e as Error).message}`
    )
    return ''
  }
}

function getInitialCacheLocation(): string {
  return (
    getQodanaInputArg('CACHE_DIR') ||
    `${process.env['CI_PROJECT_DIR']}/.qodana/cache`
  )
}

// at this moment any changes inside .qodana dir may affect analysis results
export function prepareCaches(cacheDir: string): void {
  const initialCacheLocation = getInitialCacheLocation()
  if (fs.existsSync(initialCacheLocation)) {
    fs.cpSync(initialCacheLocation, cacheDir, {recursive: true})
    fs.rmSync(initialCacheLocation, {recursive: true})
  }
}

export function uploadCache(cacheDir: string, execute: boolean): void {
  if (!execute) {
    return
  }
  try {
    const initialCacheLocation = getInitialCacheLocation()
    fs.cpSync(cacheDir, initialCacheLocation, {recursive: true})
  } catch (e) {
    console.error(`Failed to upload cache: ${(e as Error).message}`)
  }
}

export function uploadArtifacts(resultsDir: string): void {
  try {
    const resultDir = getQodanaInputArg('RESULTS_DIR')
    const ciProjectDir = process.env['CI_PROJECT_DIR']
    if (!ciProjectDir) {