diff --git a/src/repository/api/ArcanistMercurialAPI.php b/src/repository/api/ArcanistMercurialAPI.php --- a/src/repository/api/ArcanistMercurialAPI.php +++ b/src/repository/api/ArcanistMercurialAPI.php @@ -464,6 +464,16 @@ // on a large repo) because mercurial has to decompress and parse the // entire manifest every time. Do it in one large batch instead. + // See T6112. On windows escapeshellarg removes the %-sign from the command + // string rendering the fast approach useless. + if (phutil_is_windows()) { + $filedata = array(); + foreach ($paths as $path) { + $filedata[$path] = $this->getFileDataAtRevision($path, $revision); + } + return $filedata; + } + // hg cat will write the file data to files in a temp directory $tmpdir = Filesystem::createTemporaryDirectory();