From 28eb5628999b91863be68e98e89567cc057d5212 Mon Sep 17 00:00:00 2001 From: epriestley Date: Thu, 16 Jun 2016 15:58:07 -0700 Subject: [PATCH] Ignore unrecognized refs in "refs/remotes/" Summary: Ref T9028. When selecting refs, pretend refs in "refs/remotes/" that we don't otherwise recognize don't exist, since it looks like these are probably remotes //of the remote// we're observing, and who knows what state they're in. Test Plan: Used `bin/repository discover --verbose` to verify that these named refs no longer appear in the list. Reviewers: chad, joshuaspence Reviewed By: joshuaspence Maniphest Tasks: T9028 Differential Revision: https://secure.phabricator.com/D16136 --- .../query/lowlevel/DiffusionLowLevelGitRefQuery.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php b/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php index de3866594d..3b9f88d232 100644 --- a/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php +++ b/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php @@ -70,6 +70,9 @@ final class DiffusionLowLevelGitRefQuery extends DiffusionLowLevelQuery { return array(); } + $remote_prefix = 'refs/remotes/'; + $remote_len = strlen($remote_prefix); + // NOTE: Although git supports --count, we can't apply any offset or // limit logic until the very end because we may encounter a HEAD which // we want to discard. @@ -86,6 +89,12 @@ final class DiffusionLowLevelGitRefQuery extends DiffusionLowLevelQuery { } else if (!strncmp($refname, $tag_prefix, $tag_len)) { $short = substr($refname, $tag_len); $type = $type_tag; + } else if (!strncmp($refname, $remote_prefix, $remote_len)) { + // If we've found a remote ref that we didn't recognize as naming a + // branch, just ignore it. This can happen if we're observing a remote, + // and that remote has its own remotes. We don't care about their + // state and they may be out of date, so ignore them. + continue; } else { $short = $refname; $type = $type_ref;