Paladox has uploaded a new change for review.
https://gerrit.wikimedia.org/r/284517
Change subject: Allow viewing all ref type commits
......................................................................
Allow viewing all ref type commits
This allows us to view ref types such as refs/changes and refs/meta since
we use gerrit where we have the repo's but we carn't currently view all
commit since some are open and stored in refs/changes which phabricator
dosen't view yet, with this patch it lets us view those commits.
Change-Id: I7f8205651f717e98271f6f18c37730955f953d68
---
M src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php
M src/applications/repository/engine/PhabricatorRepositoryPullEngine.php
2 files changed, 70 insertions(+), 3 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/phabricator/phabricator
refs/changes/17/284517/1
diff --git
a/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php
b/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php
index 1f17f5f..08d9e2d 100644
--- a/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php
+++ b/src/applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php
@@ -43,6 +43,10 @@
$prefixes[] = 'refs/tags/';
}
+ if (!$this->isTag) {
+ $prefixes[] = 'refs/meta/';
+ }
+
$order = '-creatordate';
$futures = array();
@@ -55,6 +59,7 @@
}
// Resolve all the futures first. We want to iterate over them in prefix
+
// order, not resolution order.
foreach (new FutureIterator($futures) as $prefix => $future) {
$future->resolvex();
@@ -63,7 +68,6 @@
$results = array();
foreach ($futures as $prefix => $future) {
list($stdout) = $future->resolvex();
-
$stdout = rtrim($stdout);
if (!strlen($stdout)) {
continue;
@@ -103,7 +107,70 @@
}
}
- return $results;
+ $prefixes_custom = array();
+
+ if (!$this->isTag) {
+ $prefixes_custom[] = 'refs/changes/';
+ }
+
+ $futures_custom = array();
+ foreach ($prefixes_custom as $prefix_custom) {
+ $futures_custom['refs/'] = $repository->getLocalCommandFuture(
+ 'for-each-ref --sort=%s --format=%s %s',
+ $order,
+ $this->getFormatString(),
+ $prefix_custom);
+ }
+
+ // Resolve all the futures first. We want to iterate over them in prefix
+ // order, not resolution order.
+ foreach (new FutureIterator($futures_custom) as $prefix_custom =>
$future_custom) {
+ $future_custom->resolvex();
+ }
+
+ foreach ($futures_custom as $prefix_custom => $future_custom) {
+ list($stdout) = $future_custom->resolvex();
+
+ $stdout = rtrim($stdout);
+ if (!strlen($stdout)) {
+ continue;
+ }
+
+ // 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.
+
+ $lines = explode("\5", $stdout);
+ $lines = array_filter($lines);
+ foreach ($lines as $line) {
+ $fields = $this->extractFields($line);
+
+ $creator = $fields['creator'];
+ $matches = null;
+ if (preg_match('/^(.*) ([0-9]+) ([0-9+-]+)$/', $creator, $matches)) {
+ $fields['author'] = $matches[1];
+ $fields['epoch'] = (int)$matches[2];
+ } else {
+ $fields['author'] = null;
+ $fields['epoch'] = null;
+ }
+
+ $commit = nonempty($fields['*objectname'], $fields['objectname']);
+
+ $short = substr($fields['refname'], strlen($prefix_custom));
+ if ($short == 'HEAD') {
+ continue;
+ }
+
+ $ref = id(new DiffusionRepositoryRef())
+ ->setShortName($short)
+ ->setCommitIdentifier($commit)
+ ->setRawFields($fields);
+
+ $results[] = $ref;
+ }
+ }
+ return $results;
}
/**
diff --git
a/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php
b/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php
index 690f942..3fbbd53 100644
--- a/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php
+++ b/src/applications/repository/engine/PhabricatorRepositoryPullEngine.php
@@ -314,7 +314,7 @@
// For bare working copies, we need this magic incantation.
$future = $repository->getRemoteCommandFuture(
'fetch origin %s --prune',
- '+refs/heads/*:refs/heads/*');
+ '+refs/*:refs/*');
} else {
$future = $repository->getRemoteCommandFuture(
'fetch --all --prune');
--
To view, visit https://gerrit.wikimedia.org/r/284517
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7f8205651f717e98271f6f18c37730955f953d68
Gerrit-PatchSet: 1
Gerrit-Project: phabricator/phabricator
Gerrit-Branch: wmf/dev
Gerrit-Owner: Paladox <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits