in src/shipit/repo/ShipItRepoHG.php [418:457]
private async function genMakeDiffsUsingGit(
string $rev,
keyset<string> $files,
): Awaitable<vec<ShipItDiff>> {
$tempdir = new ShipItTempDir('git-wd');
$path = $tempdir->getPath();
await $this->genCheckoutFilesAtRevToPath($files, $rev.'^', $path.'/a');
await $this->genCheckoutFilesAtRevToPath($files, $rev, $path.'/b');
$result = await (
new ShipItShellCommand(
$path,
'git',
'diff',
'--binary',
'--no-prefix',
'--no-renames',
'a',
'b',
)
)->setNoExceptions()->genRun();
invariant(
$result->getExitCode() === 1,
'git diff exited with %d, which means no changes; expected 1, '.
'which means non-empty diff.',
$result->getExitCode(),
);
$patch = $result->getStdOut();
$diffs = vec[];
foreach (self::parsePatch($patch) as $hunk) {
$diff = self::parseDiffHunk($hunk);
if ($diff !== null) {
$diffs[] = $diff;
}
}
return $diffs;
}