Page MenuHomePhabricator

D21715.diff
No OneTemporary

D21715.diff

diff --git a/src/applications/repository/daemon/PhabricatorMercurialGraphStream.php b/src/applications/repository/daemon/PhabricatorMercurialGraphStream.php
--- a/src/applications/repository/daemon/PhabricatorMercurialGraphStream.php
+++ b/src/applications/repository/daemon/PhabricatorMercurialGraphStream.php
@@ -16,13 +16,23 @@
private $local = array();
private $localParents = array();
- public function __construct(PhabricatorRepository $repository, $commit) {
+ public function __construct(PhabricatorRepository $repository,
+ $start_commit = null) {
+
$this->repository = $repository;
+ $command = 'log --template %s --rev %s';
+ $template = '{rev}\1{node}\1{date}\1{parents}\2';
+ if ($start_commit !== null) {
+ $revset = hgsprintf('reverse(ancestors(%s))', $start_commit);
+ } else {
+ $revset = 'reverse(all())';
+ }
+
$future = $repository->getLocalCommandFuture(
- 'log --template %s --rev %s',
- '{rev}\1{node}\1{date}\1{parents}\2',
- hgsprintf('reverse(ancestors(%s))', $commit));
+ $command,
+ $template,
+ $revset);
$this->iterator = new LinesOfALargeExecFuture($future);
$this->iterator->setDelimiter("\2");
diff --git a/src/applications/repository/engine/PhabricatorRepositoryDiscoveryEngine.php b/src/applications/repository/engine/PhabricatorRepositoryDiscoveryEngine.php
--- a/src/applications/repository/engine/PhabricatorRepositoryDiscoveryEngine.php
+++ b/src/applications/repository/engine/PhabricatorRepositoryDiscoveryEngine.php
@@ -780,8 +780,7 @@
}
private function markUnreachableCommits(PhabricatorRepository $repository) {
- // For now, this is only supported for Git.
- if (!$repository->isGit()) {
+ if (!$repository->isGit() && !$repository->isHg()) {
return;
}
@@ -799,7 +798,11 @@
}
// We can share a single graph stream across all the checks we need to do.
- $stream = new PhabricatorGitGraphStream($repository);
+ if ($repository->isGit()) {
+ $stream = new PhabricatorGitGraphStream($repository);
+ } else if ($repository->isHg()) {
+ $stream = new PhabricatorMercurialGraphStream($repository);
+ }
foreach ($old_refs as $old_ref) {
$identifier = $old_ref->getCommitIdentifier();
@@ -812,7 +815,7 @@
private function markUnreachableFrom(
PhabricatorRepository $repository,
- PhabricatorGitGraphStream $stream,
+ PhabricatorRepositoryGraphStream $stream,
$identifier) {
$unreachable = array();
diff --git a/src/applications/repository/management/PhabricatorRepositoryManagementMarkReachableWorkflow.php b/src/applications/repository/management/PhabricatorRepositoryManagementMarkReachableWorkflow.php
--- a/src/applications/repository/management/PhabricatorRepositoryManagementMarkReachableWorkflow.php
+++ b/src/applications/repository/management/PhabricatorRepositoryManagementMarkReachableWorkflow.php
@@ -48,11 +48,11 @@
}
private function markReachable(PhabricatorRepository $repository) {
- if (!$repository->isGit()) {
+ if (!$repository->isGit() && !$repository->isHg()) {
throw new PhutilArgumentUsageException(
pht(
- 'Only Git repositories are supported, this repository ("%s") is '.
- 'not a Git repository.',
+ 'Only Git and Mercurial repositories are supported, unable to '.
+ 'operate on this repository ("%s").',
$repository->getDisplayName()));
}
@@ -65,7 +65,12 @@
$flag = PhabricatorRepositoryCommit::IMPORTED_UNREACHABLE;
- $graph = new PhabricatorGitGraphStream($repository);
+ if ($repository->isGit()) {
+ $graph = new PhabricatorGitGraphStream($repository);
+ } else if ($repository->isHg()) {
+ $graph = new PhabricatorMercurialGraphStream($repository);
+ }
+
foreach ($commits as $commit) {
$identifier = $commit->getCommitIdentifier();

File Metadata

Mime Type
text/plain
Expires
May 16 2024, 12:30 AM (4 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6288872
Default Alt Text
D21715.diff (3 KB)

Event Timeline