Page MenuHomePhabricator

D21528.diff
No OneTemporary

D21528.diff

diff --git a/src/applications/diffusion/conduit/DiffusionBrowseQueryConduitAPIMethod.php b/src/applications/diffusion/conduit/DiffusionBrowseQueryConduitAPIMethod.php
--- a/src/applications/diffusion/conduit/DiffusionBrowseQueryConduitAPIMethod.php
+++ b/src/applications/diffusion/conduit/DiffusionBrowseQueryConduitAPIMethod.php
@@ -37,7 +37,7 @@
$repository = $drequest->getRepository();
$path = $request->getValue('path');
- if (!strlen($path)) {
+ if (!strlen($path) || $path === '/') {
$path = null;
}
@@ -49,12 +49,13 @@
if ($path === null) {
// Fast path to improve the performance of the repository view; we know
// the root is always a tree at any commit and always exists.
- $stdout = 'tree';
+ $path_type = 'tree';
} else {
try {
list($stdout) = $repository->execxLocalCommand(
'cat-file -t -- %s',
sprintf('%s:%s', $commit, $path));
+ $path_type = trim($stdout);
} catch (CommandException $e) {
// The "cat-file" command may fail if the path legitimately does not
// exist, but it may also fail if the path is a submodule. This can
@@ -114,7 +115,7 @@
}
}
- if (trim($stdout) == 'blob') {
+ if ($path_type === 'blob') {
$result->setReasonForEmptyResultSet(
DiffusionBrowseResultSet::REASON_IS_FILE);
return $result;
@@ -130,6 +131,12 @@
'ls-tree -z -l %s --',
gitsprintf('%s', $commit));
} else {
+ if ($path_type === 'tree') {
+ $path = rtrim($path, '/').'/';
+ } else {
+ $path = rtrim($path, '/');
+ }
+
list($stdout) = $repository->execxLocalCommand(
'ls-tree -z -l %s -- %s',
gitsprintf('%s', $commit),

File Metadata

Mime Type
text/plain
Expires
Mon, May 13, 10:47 PM (2 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6293506
Default Alt Text
D21528.diff (1 KB)

Event Timeline