1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-27 01:02:42 +01:00

Fix issue in Mercurial repos with duplicate branch heads

Summary:
Fixes T5613. A branch may have multiple heads in Mercurial, but `executeOne()` expects exactly one result.

Load them all instead. Equivalently, we could `limit(1)`, but it's likely that we'll use the cursors in the future to reduce the number of VCS operations we do, so this is probably a little more along the lines where we're headed.

Test Plan: Poked around some repos.

Reviewers: chad, richardvanvelzen

Reviewed By: richardvanvelzen

Subscribers: epriestley

Maniphest Tasks: T5613

Differential Revision: https://secure.phabricator.com/D9918
This commit is contained in:
epriestley 2014-07-13 06:55:04 -07:00
parent 9cb6b2cfcc
commit 66a30ef97b

View file

@ -29,13 +29,14 @@ final class DiffusionRepositoryController extends DiffusionController {
// If this VCS supports branches, check that the selected branch actually
// exists.
if ($drequest->supportsBranches()) {
$ref_cursor = id(new PhabricatorRepositoryRefCursorQuery())
// NOTE: Mercurial may have multiple branch heads with the same name.
$ref_cursors = id(new PhabricatorRepositoryRefCursorQuery())
->setViewer($viewer)
->withRepositoryPHIDs(array($repository->getPHID()))
->withRefTypes(array(PhabricatorRepositoryRefCursor::TYPE_BRANCH))
->withRefNames(array($drequest->getBranch()))
->executeOne();
if ($ref_cursor) {
->execute();
if ($ref_cursors) {
// This is a valid branch, so we necessarily have some content.
$page_has_content = true;
} else {