diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 1436e99dae..ab26999da9 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -579,6 +579,7 @@ phutil_register_library_map(array( 'PhabricatorRepositoryGitHubPostReceiveController' => 'applications/repository/controller/github-post-receive', 'PhabricatorRepositoryListController' => 'applications/repository/controller/list', 'PhabricatorRepositoryMercurialCommitDiscoveryDaemon' => 'applications/repository/daemon/commitdiscovery/mercurial', + 'PhabricatorRepositoryMercurialCommitMessageParserWorker' => 'applications/repository/worker/commitmessageparser/mercurial', 'PhabricatorRepositoryMercurialPullDaemon' => 'applications/repository/daemon/mercurialpull', 'PhabricatorRepositoryPullLocalDaemon' => 'applications/repository/daemon/pulllocal', 'PhabricatorRepositoryShortcut' => 'applications/repository/storage/shortcut', @@ -1180,6 +1181,7 @@ phutil_register_library_map(array( 'PhabricatorRepositoryGitHubPostReceiveController' => 'PhabricatorRepositoryController', 'PhabricatorRepositoryListController' => 'PhabricatorRepositoryController', 'PhabricatorRepositoryMercurialCommitDiscoveryDaemon' => 'PhabricatorRepositoryCommitDiscoveryDaemon', + 'PhabricatorRepositoryMercurialCommitMessageParserWorker' => 'PhabricatorRepositoryCommitMessageParserWorker', 'PhabricatorRepositoryMercurialPullDaemon' => 'PhabricatorRepositoryPullLocalDaemon', 'PhabricatorRepositoryPullLocalDaemon' => 'PhabricatorRepositoryDaemon', 'PhabricatorRepositoryShortcut' => 'PhabricatorRepositoryDAO', diff --git a/src/applications/repository/daemon/committask/PhabricatorRepositoryCommitTaskDaemon.php b/src/applications/repository/daemon/committask/PhabricatorRepositoryCommitTaskDaemon.php index 751f435446..c9ce60ca0a 100644 --- a/src/applications/repository/daemon/committask/PhabricatorRepositoryCommitTaskDaemon.php +++ b/src/applications/repository/daemon/committask/PhabricatorRepositoryCommitTaskDaemon.php @@ -51,28 +51,25 @@ class PhabricatorRepositoryCommitTaskDaemon switch ($vcs) { case PhabricatorRepositoryType::REPOSITORY_TYPE_GIT: $class = 'PhabricatorRepositoryGitCommitMessageParserWorker'; - $task = new PhabricatorWorkerTask(); - $task->setTaskClass($class); - $task->setData( - array( - 'commitID' => $commit->getID(), - )); - $task->save(); break; case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN: $class = 'PhabricatorRepositorySvnCommitMessageParserWorker'; - $task = new PhabricatorWorkerTask(); - $task->setTaskClass($class); - $task->setData( - array( - 'commitID' => $commit->getID(), - )); - $task->save(); + break; + case PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL: + $class = 'PhabricatorRepositoryMercurialCommitMessageParserWorker'; break; default: throw new Exception("Unknown repository type."); } + $task = new PhabricatorWorkerTask(); + $task->setTaskClass($class); + $task->setData( + array( + 'commitID' => $commit->getID(), + )); + $task->save(); + $this->stillWorking(); } sleep(1); diff --git a/src/applications/repository/worker/commitmessageparser/mercurial/PhabricatorRepositoryMercurialCommitMessageParserWorker.php b/src/applications/repository/worker/commitmessageparser/mercurial/PhabricatorRepositoryMercurialCommitMessageParserWorker.php new file mode 100644 index 0000000000..70bc86d8ca --- /dev/null +++ b/src/applications/repository/worker/commitmessageparser/mercurial/PhabricatorRepositoryMercurialCommitMessageParserWorker.php @@ -0,0 +1,53 @@ +getDetail('local-path'); + + list($stdout) = $repository->execxLocalCommand( + 'log --template %s --rev %s', + '{author}\\n{desc}', + $commit->getCommitIdentifier()); + + list($author, $message) = explode("\n", $stdout, 2); + + $author = phutil_utf8ize($author); + $message = phutil_utf8ize($message); + $message = trim($message); + + $this->updateCommitData($author, $message); + + if ($this->shouldQueueFollowupTasks()) { + $task = new PhabricatorWorkerTask(); + $task->setTaskClass( + 'PhabricatorRepositoryMercurialCommitChangeParserWorker'); + $task->setData( + array( + 'commitID' => $commit->getID(), + )); + $task->save(); + } + } + +} diff --git a/src/applications/repository/worker/commitmessageparser/mercurial/__init__.php b/src/applications/repository/worker/commitmessageparser/mercurial/__init__.php new file mode 100644 index 0000000000..1f22433b1c --- /dev/null +++ b/src/applications/repository/worker/commitmessageparser/mercurial/__init__.php @@ -0,0 +1,15 @@ +