diff --git a/llvm/docs/Phabricator.rst b/llvm/docs/Phabricator.rst --- a/llvm/docs/Phabricator.rst +++ b/llvm/docs/Phabricator.rst @@ -42,8 +42,7 @@ .. code-block:: console % cd arcanist - % git fetch https://github.com/rashkov/arcanist update_cacerts - % git cherry-pick e3659d43d8911e91739f3b0c5935598bceb859aa + % git am /llvm/utils/phabricator/*.patch You can learn more about how to use arc to interact with Phabricator in the `Arcanist User Guide`_. diff --git a/llvm/utils/phabricator/0001-Fix-PHP-8.1-incompatibility-with-arc-patch-D-12345.patch b/llvm/utils/phabricator/0001-Fix-PHP-8.1-incompatibility-with-arc-patch-D-12345.patch new file mode 100644 --- /dev/null +++ b/llvm/utils/phabricator/0001-Fix-PHP-8.1-incompatibility-with-arc-patch-D-12345.patch @@ -0,0 +1,70 @@ +From bb2e9a0394a48f4ef3576e8d91607e8129b2b716 Mon Sep 17 00:00:00 2001 +From: Nick Desaulniers +Date: Fri, 8 Jul 2022 14:55:46 -0700 +Subject: [PATCH] Fix PHP 8.1 incompatibility with `arc patch D<12345>` + +Fixes the following observed error with PHP 8.1: + + EXCEPTION: (RuntimeException) preg_match(): Passing null to parameter phacility#2 ($subject) of type string is deprecated at [/src/error/PhutilErrorHandler.php:261] + arcanist(head=master, ref.master=acec17af414f) + #0 PhutilErrorHandler::handleError(integer, string, string, integer) + phacility#1 preg_match(string, NULL, NULL) called at [/src/repository/api/ArcanistGitAPI.php:603] + phacility#2 ArcanistGitAPI::getCanonicalRevisionName(NULL) called at [/src/repository/api/ArcanistGitAPI.php:1146] + phacility#3 ArcanistGitAPI::hasLocalCommit(NULL) called at [/src/workflow/ArcanistPatchWorkflow.php:433] + phacility#4 ArcanistPatchWorkflow::run() called at [/src/workflow/ArcanistPatchWorkflow.php:398] + phacility#5 ArcanistPatchWorkflow::run() called at [/scripts/arcanist.php:427] + +Link: https://secure.phabricator.com/book/phabcontrib/article/contributing_code/ +Link: https://reviews.llvm.org/D129232#3634072 +Suggested-by: Yuanfang Chen +Signed-off-by: Nick Desaulniers +--- + src/differential/ArcanistDifferentialDependencyGraph.php | 3 ++- + src/lint/linter/ArcanistScriptAndRegexLinter.php | 2 +- + src/repository/api/ArcanistGitAPI.php | 3 ++- + 3 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/differential/ArcanistDifferentialDependencyGraph.php b/src/differential/ArcanistDifferentialDependencyGraph.php +index 64e2f9c71c20..fbc4e6594f0e 100644 +--- a/src/differential/ArcanistDifferentialDependencyGraph.php ++++ b/src/differential/ArcanistDifferentialDependencyGraph.php +@@ -42,7 +42,8 @@ final class ArcanistDifferentialDependencyGraph extends AbstractDirectedGraph { + $edges = array(); + foreach ($dependencies as $dependency) { + $dependency_revision = $this->getCommitHashFromDict($dependency); +- if ($repository_api->hasLocalCommit($dependency_revision)) { ++ if (phutil_nonempty_string($dependency_revision) && ++ $repository_api->hasLocalCommit($dependency_revision)) { + $edges[$dependency['phid']] = array(); + continue; + } +diff --git a/src/lint/linter/ArcanistScriptAndRegexLinter.php b/src/lint/linter/ArcanistScriptAndRegexLinter.php +index 0c3d9d9a11ca..b9f6924ec997 100644 +--- a/src/lint/linter/ArcanistScriptAndRegexLinter.php ++++ b/src/lint/linter/ArcanistScriptAndRegexLinter.php +@@ -338,7 +338,7 @@ final class ArcanistScriptAndRegexLinter extends ArcanistLinter { + } + + $line = idx($match, 'line'); +- if (strlen($line)) { ++ if (phutil_nonempty_string($line) && strlen($line)) { + $line = (int)$line; + if (!$line) { + $line = 1; +diff --git a/src/repository/api/ArcanistGitAPI.php b/src/repository/api/ArcanistGitAPI.php +index 6c6d2ac42a19..13907d5634be 100644 +--- a/src/repository/api/ArcanistGitAPI.php ++++ b/src/repository/api/ArcanistGitAPI.php +@@ -1143,7 +1143,8 @@ final class ArcanistGitAPI extends ArcanistRepositoryAPI { + + public function hasLocalCommit($commit) { + try { +- if (!$this->getCanonicalRevisionName($commit)) { ++ if (!phutil_nonempty_string($commit) || ++ !$this->getCanonicalRevisionName($commit)) { + return false; + } + } catch (CommandException $exception) { +-- +2.37.0.rc0.161.g10f37bed90-goog +