mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-25 16:22:42 +01:00
Raise a better error message when "arc patch" fails because of filename case changes
Summary: Git can't apply filename case change patches on case-insensitive filesystems. Some day we could manually do this ourselves, but it's fairly rare and complicated -- just raise a useful warning. Test Plan: Tried to apply a case-changing patch, got a good error. Reviewers: btrahan Reviewed By: btrahan CC: aran, epriestley Maniphest Tasks: T618 Differential Revision: https://secure.phabricator.com/D2015
This commit is contained in:
parent
4ca58d1129
commit
b67ce7e534
1 changed files with 18 additions and 1 deletions
|
@ -581,7 +581,24 @@ EOTEXT
|
||||||
$future = $repository_api->execFutureLocal(
|
$future = $repository_api->execFutureLocal(
|
||||||
'apply --index --reject');
|
'apply --index --reject');
|
||||||
$future->write($bundle->toGitPatch());
|
$future->write($bundle->toGitPatch());
|
||||||
$future->resolvex();
|
|
||||||
|
try {
|
||||||
|
$future->resolvex();
|
||||||
|
} catch (CommandException $ex) {
|
||||||
|
echo phutil_console_format(
|
||||||
|
"\n<bg:red>** Patch Failed! **</bg>\n");
|
||||||
|
$stderr = $ex->getStdErr();
|
||||||
|
if (preg_match('/already exists in working directory/', $stderr)) {
|
||||||
|
echo phutil_console_wrap(
|
||||||
|
phutil_console_format(
|
||||||
|
"\n<bg:yellow>** WARNING **</bg> This patch may have failed ".
|
||||||
|
"because it attempts to change the case of a filename (for ".
|
||||||
|
"instance, from 'example.c' to 'Example.c'). Git can not apply ".
|
||||||
|
"patches like this on case-insensitive filesystems. You must ".
|
||||||
|
"apply this patch manually.\n"));
|
||||||
|
}
|
||||||
|
throw $ex;
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->shouldCommit()) {
|
if ($this->shouldCommit()) {
|
||||||
$commit_message = $this->getCommitMessage($bundle);
|
$commit_message = $this->getCommitMessage($bundle);
|
||||||
|
|
Loading…
Reference in a new issue