Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15410207
D12551.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
D12551.diff
View Options
diff --git a/src/applications/diffusion/query/DiffusionCachedResolveRefsQuery.php b/src/applications/diffusion/query/DiffusionCachedResolveRefsQuery.php
--- a/src/applications/diffusion/query/DiffusionCachedResolveRefsQuery.php
+++ b/src/applications/diffusion/query/DiffusionCachedResolveRefsQuery.php
@@ -96,7 +96,7 @@
$cursors = queryfx_all(
$conn_r,
- 'SELECT refNameHash, refType, commitIdentifier FROM %T
+ 'SELECT refNameHash, refType, commitIdentifier, isClosed FROM %T
WHERE repositoryPHID = %s AND refNameHash IN (%Ls)',
id(new PhabricatorRepositoryRefCursor())->getTableName(),
$repository->getPHID(),
@@ -107,6 +107,7 @@
$results[$name_hashes[$cursor['refNameHash']]][] = array(
'type' => $cursor['refType'],
'identifier' => $cursor['commitIdentifier'],
+ 'closed' => (bool)$cursor['isClosed'],
);
// TODO: In Git, we don't store (and thus don't return) the hash
diff --git a/src/applications/diffusion/query/lowlevel/DiffusionLowLevelResolveRefsQuery.php b/src/applications/diffusion/query/lowlevel/DiffusionLowLevelResolveRefsQuery.php
--- a/src/applications/diffusion/query/lowlevel/DiffusionLowLevelResolveRefsQuery.php
+++ b/src/applications/diffusion/query/lowlevel/DiffusionLowLevelResolveRefsQuery.php
@@ -143,54 +143,32 @@
// First, pull all of the branch heads in the repository. Doing this in
// bulk is much faster than querying each individual head if we're
// checking even a small number of refs.
- $futures = array();
- $futures['all'] = $repository->getLocalCommandFuture(
- 'log --template=%s --rev %s',
- '{node} {branch}\\n',
- hgsprintf('head()'));
- $futures['open'] = $repository->getLocalCommandFuture(
- 'log --template=%s --rev %s',
- '{node} {branch}\\n',
- hgsprintf('head() and not closed()'));
-
-
- $map = array();
- foreach (new FutureIterator($futures) as $key => $future) {
- list($stdout) = $future->resolvex();
- $lines = phutil_split_lines($stdout, $retain_endings = false);
- foreach ($lines as $idx => $line) {
- list($node, $branch) = explode(' ', $line, 2);
- $map[$branch]['nodes'][] = $node;
- if ($key == 'open') {
- $map[$branch]['open'] = true;
- }
- }
- }
+ $branches = id(new DiffusionLowLevelMercurialBranchesQuery())
+ ->setRepository($repository)
+ ->executeQuery();
+
+ $branches = mgroup($branches, 'getShortName');
$results = array();
$unresolved = $this->refs;
foreach ($unresolved as $key => $ref) {
- if (!isset($map[$ref])) {
+ if (empty($branches[$ref])) {
continue;
}
- $is_closed = !idx($map[$ref], 'open', false);
- foreach ($map[$ref]['nodes'] as $node) {
- $results[$ref][$node] = array(
+ foreach ($branches[$ref] as $branch) {
+ $fields = $branch->getRawFields();
+
+ $results[$ref][] = array(
'type' => 'branch',
- 'identifier' => $node,
- 'closed' => $is_closed,
+ 'identifier' => $branch->getCommitIdentifier(),
+ 'closed' => idx($fields, 'closed', false),
);
}
unset($unresolved[$key]);
}
- // Strip the node keys off the result list.
- foreach ($results as $ref => $result_list) {
- $results[$ref] = array_values($result_list);
- }
-
if (!$unresolved) {
return $results;
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Mar 20, 6:54 AM (1 d, 12 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7672440
Default Alt Text
D12551.diff (3 KB)
Attached To
Mode
D12551: Simplify Mercurial ref resolution; expose "closed" at top-level
Attached
Detach File
Event Timeline
Log In to Comment