mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-22 14:52:41 +01:00
Sync up UUIDs and create project configs.
This commit is contained in:
parent
1c6487197f
commit
11ea93260a
17 changed files with 380 additions and 49 deletions
17
resources/sql/patches/019.arcprojects.sql
Normal file
17
resources/sql/patches/019.arcprojects.sql
Normal file
|
@ -0,0 +1,17 @@
|
|||
CREATE TABLE phabricator_repository.repository_arcanistproject (
|
||||
id int unsigned not null auto_increment primary key,
|
||||
phid varchar(64) binary not null,
|
||||
unique key(phid),
|
||||
name varchar(255) not null,
|
||||
unique key (name),
|
||||
repositoryID int unsigned
|
||||
);
|
||||
|
||||
ALTER TABLE phabricator_repository.repository
|
||||
ADD uuid varchar(64) binary;
|
||||
|
||||
ALTER TABLE phabricator_differential.differential_diff
|
||||
CHANGE arcanistProject arcanistProjectPHID varchar(64) binary;
|
||||
|
||||
ALTER TABLE phabricator_differential.differential_diff
|
||||
ADD repositoryUUID varchar(64) binary;
|
|
@ -354,6 +354,8 @@ phutil_register_library_map(array(
|
|||
'PhabricatorRemarkupRuleDifferential' => 'infrastructure/markup/remarkup/markuprule/differential',
|
||||
'PhabricatorRemarkupRuleManiphest' => 'infrastructure/markup/remarkup/markuprule/maniphest',
|
||||
'PhabricatorRepository' => 'applications/repository/storage/repository',
|
||||
'PhabricatorRepositoryArcanistProject' => 'applications/repository/storage/arcanistproject',
|
||||
'PhabricatorRepositoryArcanistProjectEditController' => 'applications/repository/controller/arcansistprojectedit',
|
||||
'PhabricatorRepositoryCommit' => 'applications/repository/storage/commit',
|
||||
'PhabricatorRepositoryCommitChangeParserWorker' => 'applications/repository/worker/commitchangeparser/base',
|
||||
'PhabricatorRepositoryCommitData' => 'applications/repository/storage/commitdata',
|
||||
|
@ -715,6 +717,8 @@ phutil_register_library_map(array(
|
|||
'PhabricatorRemarkupRuleDifferential' => 'PhutilRemarkupRule',
|
||||
'PhabricatorRemarkupRuleManiphest' => 'PhutilRemarkupRule',
|
||||
'PhabricatorRepository' => 'PhabricatorRepositoryDAO',
|
||||
'PhabricatorRepositoryArcanistProject' => 'PhabricatorRepositoryDAO',
|
||||
'PhabricatorRepositoryArcanistProjectEditController' => 'PhabricatorRepositoryController',
|
||||
'PhabricatorRepositoryCommit' => 'PhabricatorRepositoryDAO',
|
||||
'PhabricatorRepositoryCommitChangeParserWorker' => 'PhabricatorRepositoryCommitParserWorker',
|
||||
'PhabricatorRepositoryCommitData' => 'PhabricatorRepositoryDAO',
|
||||
|
|
|
@ -166,6 +166,8 @@ class AphrontDefaultApplicationConfiguration
|
|||
'edit/(?P<id>\d+)/(?:(?P<view>\w+)?/)?$' =>
|
||||
'PhabricatorRepositoryEditController',
|
||||
'delete/(?P<id>\d+)/$' => 'PhabricatorRepositoryDeleteController',
|
||||
'project/(?P<id>\d+)/' =>
|
||||
'PhabricatorRepositoryArcanistProjectEditController',
|
||||
),
|
||||
|
||||
'/search/' => array(
|
||||
|
|
|
@ -35,6 +35,7 @@ class ConduitAPI_differential_creatediff_Method extends ConduitAPIMethod {
|
|||
'creationMethod' => 'optional string',
|
||||
'authorPHID' => 'optional phid',
|
||||
'arcanistProject' => 'optional string',
|
||||
'repositoryUUID' => 'optional string',
|
||||
'lintStatus' =>
|
||||
'required enum<none, skip, okay, warn, fail>',
|
||||
'unitStatus' =>
|
||||
|
@ -83,7 +84,23 @@ class ConduitAPI_differential_creatediff_Method extends ConduitAPIMethod {
|
|||
$diff->setSourceControlBaseRevision(
|
||||
$request->getValue('sourceControlBaseRevision'));
|
||||
|
||||
$diff->setArcanistProject($request->getValue('arcanistProject'));
|
||||
$project_name = $request->getValue('arcanistProject');
|
||||
$project_phid = null;
|
||||
if ($project_name) {
|
||||
$arcanist_project = id(new PhabricatorRepositoryArcanistProject())
|
||||
->loadOneWhere(
|
||||
'name = %s',
|
||||
$project_name);
|
||||
if (!$arcanist_project) {
|
||||
$arcanist_project = new PhabricatorRepositoryArcanistProject();
|
||||
$arcanist_project->setName($project_name);
|
||||
$arcanist_project->save();
|
||||
}
|
||||
$project_phid = $arcanist_project->getPHID();
|
||||
}
|
||||
|
||||
$diff->setArcanistProjectPHID($project_phid);
|
||||
$diff->setRepositoryUUID($request->getValue('repositoryUUID'));
|
||||
|
||||
switch ($request->getValue('lintStatus')) {
|
||||
case 'skip':
|
||||
|
|
|
@ -14,6 +14,7 @@ phutil_require_module('phabricator', 'applications/differential/constants/revisi
|
|||
phutil_require_module('phabricator', 'applications/differential/constants/unitstatus');
|
||||
phutil_require_module('phabricator', 'applications/differential/storage/diff');
|
||||
phutil_require_module('phabricator', 'applications/differential/storage/revision');
|
||||
phutil_require_module('phabricator', 'applications/repository/storage/arcanistproject');
|
||||
phutil_require_module('phabricator', 'infrastructure/env');
|
||||
|
||||
phutil_require_module('phutil', 'utils');
|
||||
|
|
|
@ -157,4 +157,29 @@ class DifferentialChangeset extends DifferentialDAO {
|
|||
return substr(md5($this->getFilename()), 0, 8);
|
||||
}
|
||||
|
||||
public function getAbsoluteRepositoryPath(
|
||||
DifferentialDiff $diff,
|
||||
PhabricatorRepository $repository) {
|
||||
|
||||
$base = '/';
|
||||
if ($diff->getSourceControlPath()) {
|
||||
$base = id(new PhutilURI($diff->getSourceControlPath()))->getPath();
|
||||
}
|
||||
|
||||
$path = $this->getFileName();
|
||||
$path = rtrim($base, '/').'/'.ltrim($path, '/');
|
||||
|
||||
$vcs = $repository->getVersionControlSystem();
|
||||
if ($vcs == PhabricatorRepositoryType::REPOSITORY_TYPE_SVN) {
|
||||
$prefix = $repository->getDetail('remote-uri');
|
||||
$prefix = id(new PhutilURI($prefix))->getPath();
|
||||
if (!strncmp($path, $prefix, strlen($prefix))) {
|
||||
$path = substr($path, strlen($prefix));
|
||||
}
|
||||
$path = '/'.ltrim($path, '/');
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,7 +9,9 @@
|
|||
phutil_require_module('phabricator', 'applications/differential/constants/changetype');
|
||||
phutil_require_module('phabricator', 'applications/differential/storage/base');
|
||||
phutil_require_module('phabricator', 'applications/differential/storage/hunk');
|
||||
phutil_require_module('phabricator', 'applications/repository/constants/repositorytype');
|
||||
|
||||
phutil_require_module('phutil', 'parser/uri');
|
||||
phutil_require_module('phutil', 'utils');
|
||||
|
||||
|
||||
|
|
|
@ -36,8 +36,9 @@ class DifferentialDiff extends DifferentialDAO {
|
|||
protected $branch;
|
||||
|
||||
protected $parentRevisionID;
|
||||
protected $arcanistProject;
|
||||
protected $arcanistProjectPHID;
|
||||
protected $creationMethod;
|
||||
protected $repositoryUUID;
|
||||
|
||||
protected $description;
|
||||
|
||||
|
|
|
@ -19,8 +19,7 @@
|
|||
class HeraldDifferentialRevisionAdapter extends HeraldObjectAdapter {
|
||||
|
||||
protected $revision;
|
||||
protected $changesets;
|
||||
protected $diff = null;
|
||||
protected $diff;
|
||||
|
||||
protected $explicitCCs;
|
||||
protected $explicitReviewers;
|
||||
|
@ -30,14 +29,17 @@ class HeraldDifferentialRevisionAdapter extends HeraldObjectAdapter {
|
|||
protected $newCCs = array();
|
||||
protected $remCCs = array();
|
||||
|
||||
public function __construct(DifferentialRevision $revision) {
|
||||
protected $repository;
|
||||
protected $affectedPackages;
|
||||
protected $changesets;
|
||||
|
||||
public function __construct(
|
||||
DifferentialRevision $revision,
|
||||
DifferentialDiff $diff) {
|
||||
|
||||
$revision->loadRelationships();
|
||||
$this->revision = $revision;
|
||||
}
|
||||
|
||||
public function setDiff(Diff $diff) {
|
||||
$this->diff = $diff;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setExplicitCCs($explicit_ccs) {
|
||||
|
@ -80,47 +82,103 @@ class HeraldDifferentialRevisionAdapter extends HeraldObjectAdapter {
|
|||
return HeraldContentTypeConfig::CONTENT_TYPE_DIFFERENTIAL;
|
||||
}
|
||||
|
||||
public function loadRepository() {
|
||||
if ($this->repository === null) {
|
||||
$diff = $this->diff;
|
||||
|
||||
$repository = false;
|
||||
|
||||
if ($diff->getRepositoryUUID()) {
|
||||
$repository = id(new PhabricatorRepository())->loadOneWhere(
|
||||
'uuid = %s',
|
||||
$diff->getRepositoryUUID());
|
||||
}
|
||||
|
||||
if (!$repository && $diff->getArcanistProjectPHID()) {
|
||||
$project = id(new PhabricatorRepositoryArcanistProject())->loadOneWhere(
|
||||
'phid = %s',
|
||||
$diff->getArcanistProjectPHID());
|
||||
if ($project && $project->getRepositoryID()) {
|
||||
$repository = id(new PhabricatorRepository())->load(
|
||||
$project->getRepositoryID());
|
||||
}
|
||||
}
|
||||
|
||||
$this->repository = $repository;
|
||||
}
|
||||
return $this->repository;
|
||||
}
|
||||
|
||||
protected function loadChangesets() {
|
||||
if ($this->changesets) {
|
||||
return $this->changesets;
|
||||
if ($this->changesets === null) {
|
||||
$this->changesets = $this->diff->loadChangesets();
|
||||
}
|
||||
$diff = $this->loadDiff();
|
||||
$changes = $diff->getChangesets();
|
||||
return ($this->changesets = $changes);
|
||||
return $this->changesets;
|
||||
}
|
||||
|
||||
protected function loadDiff() {
|
||||
if ($this->diff === null) {
|
||||
$this->diff = $this->revision->getActiveDiff();
|
||||
protected function loadAffectedPaths() {
|
||||
$changesets = $this->loadChangesets();
|
||||
|
||||
$paths = array();
|
||||
foreach ($changesets as $changeset) {
|
||||
$paths[] = $this->getAbsoluteRepositoryPathForChangeset($changeset);
|
||||
}
|
||||
return $this->diff;
|
||||
return $paths;
|
||||
}
|
||||
|
||||
protected function getContentDictionary() {
|
||||
$changes = $this->loadChangesets();
|
||||
protected function getAbsoluteRepositoryPathForChangeset(
|
||||
DifferentialChangeset $changeset) {
|
||||
|
||||
$repository = $this->loadRepository();
|
||||
if (!$repository) {
|
||||
return '/'.ltrim($changeset->getFilename(), '/');
|
||||
}
|
||||
|
||||
$diff = $this->diff;
|
||||
|
||||
return $changeset->getAbsoluteRepositoryPath($diff, $repository);
|
||||
}
|
||||
|
||||
protected function loadContentDictionary() {
|
||||
$changesets = $this->loadChangesets();
|
||||
|
||||
$hunks = array();
|
||||
if ($changes) {
|
||||
$hunks = id(new DifferentialHunk())->loadAllwhere(
|
||||
if ($changesets) {
|
||||
$hunks = id(new DifferentialHunk())->loadAllWhere(
|
||||
'changesetID in (%Ld)',
|
||||
mpull($changes, 'getID'));
|
||||
mpull($changesets, 'getID'));
|
||||
}
|
||||
|
||||
$dict = array();
|
||||
$hunks = mgroup($hunks, 'getChangesetID');
|
||||
$changes = mpull($changes, null, 'getID');
|
||||
foreach ($changes as $id => $change) {
|
||||
$filename = $change->getFilename();
|
||||
$changesets = mpull($changesets, null, 'getID');
|
||||
foreach ($changesets as $id => $changeset) {
|
||||
$path = $this->getAbsoluteRepositoryPathForChangeset($changeset);
|
||||
$content = array();
|
||||
foreach (idx($hunks, $id, array()) as $hunk) {
|
||||
$content[] = $hunk->makeChanges();
|
||||
}
|
||||
$dict[$filename] = implode("\n", $content);
|
||||
$dict[$path] = implode("\n", $content);
|
||||
}
|
||||
|
||||
return $dict;
|
||||
}
|
||||
|
||||
public function loadAffectedPackages() {
|
||||
if ($this->affectedPackages === null) {
|
||||
$this->affectedPackages = array();
|
||||
|
||||
$repository = $this->loadRepository();
|
||||
if ($repository) {
|
||||
$packages = PhabricatorOwnersPackage::loadAffectedPackages(
|
||||
$repository,
|
||||
$this->loadAffectedPaths());
|
||||
$this->affectedPackages = $packages;
|
||||
}
|
||||
}
|
||||
return $this->affectedPackages;
|
||||
}
|
||||
|
||||
public function getHeraldField($field) {
|
||||
switch ($field) {
|
||||
case HeraldFieldConfig::FIELD_TITLE:
|
||||
|
@ -134,8 +192,7 @@ class HeraldDifferentialRevisionAdapter extends HeraldObjectAdapter {
|
|||
return $this->revision->getAuthorPHID();
|
||||
break;
|
||||
case HeraldFieldConfig::FIELD_DIFF_FILE:
|
||||
$changes = $this->loadChangesets();
|
||||
return array_values(mpull($changes, 'getFilename'));
|
||||
return $this->loadAffectedPaths();
|
||||
case HeraldFieldConfig::FIELD_CC:
|
||||
if (isset($this->explicitCCs)) {
|
||||
return array_keys($this->explicitCCs);
|
||||
|
@ -148,31 +205,21 @@ class HeraldDifferentialRevisionAdapter extends HeraldObjectAdapter {
|
|||
} else {
|
||||
return $this->revision->getReviewers();
|
||||
}
|
||||
/* TODO
|
||||
case HeraldFieldConfig::FIELD_REPOSITORY:
|
||||
$id = $this->revision->getRepositoryID();
|
||||
if (!$id) {
|
||||
return null;
|
||||
}
|
||||
require_module_lazy('intern/repository');
|
||||
$repository = RepositoryRef::getByID($id);
|
||||
$repository = $this->loadRepository();
|
||||
if (!$repository) {
|
||||
return null;
|
||||
}
|
||||
return $repository->getFBID();
|
||||
*/
|
||||
return $repository->getPHID();
|
||||
case HeraldFieldConfig::FIELD_DIFF_CONTENT:
|
||||
return $this->getContentDictionary();
|
||||
/* TODO
|
||||
return $this->loadContentDictionary();
|
||||
case HeraldFieldConfig::FIELD_AFFECTED_PACKAGE:
|
||||
return mpull(
|
||||
DiffOwners::getPackages($this->loadDiff()),
|
||||
'getFBID');
|
||||
*/
|
||||
/* TODO
|
||||
$packages = $this->loadAffectedPackages();
|
||||
return mpull($packages, 'getPHID');
|
||||
case HeraldFieldConfig::FIELD_AFFECTED_PACKAGE_OWNER:
|
||||
return DiffOwners::getOwners($this->loadDiff());
|
||||
*/
|
||||
$packages = $this->loadAffectedPackages();
|
||||
$owners = PhabricatorOwnersOwner::loadAllForPackages($packages);
|
||||
return mpull($owners, 'getUserPHID');
|
||||
default:
|
||||
throw new Exception("Invalid field '{$field}'.");
|
||||
}
|
||||
|
|
|
@ -13,6 +13,10 @@ phutil_require_module('phabricator', 'applications/herald/config/contenttype');
|
|||
phutil_require_module('phabricator', 'applications/herald/config/field');
|
||||
phutil_require_module('phabricator', 'applications/herald/engine/effect');
|
||||
phutil_require_module('phabricator', 'applications/herald/storage/transcript/apply');
|
||||
phutil_require_module('phabricator', 'applications/owners/storage/owner');
|
||||
phutil_require_module('phabricator', 'applications/owners/storage/package');
|
||||
phutil_require_module('phabricator', 'applications/repository/storage/arcanistproject');
|
||||
phutil_require_module('phabricator', 'applications/repository/storage/repository');
|
||||
|
||||
phutil_require_module('phutil', 'utils');
|
||||
|
||||
|
|
|
@ -69,7 +69,9 @@ class HeraldTestConsoleController extends HeraldController {
|
|||
|
||||
if (!$errors) {
|
||||
if ($object instanceof DifferentialRevision) {
|
||||
$adapter = new HeraldDifferentialRevisionAdapter($object);
|
||||
$adapter = new HeraldDifferentialRevisionAdapter(
|
||||
$object,
|
||||
$object->loadActiveDiff());
|
||||
} else if ($object instanceof PhabricatorRepositoryCommit) {
|
||||
$data = id(new PhabricatorRepositoryCommitData())->loadOneWhere(
|
||||
'commitID = %d',
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Copyright 2011 Facebook, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
class PhabricatorRepositoryArcanistProjectEditController
|
||||
extends PhabricatorRepositoryController {
|
||||
|
||||
private $id;
|
||||
|
||||
public function willProcessRequest(array $data) {
|
||||
$this->id = $data['id'];
|
||||
}
|
||||
|
||||
public function processRequest() {
|
||||
|
||||
$request = $this->getRequest();
|
||||
$user = $request->getUser();
|
||||
|
||||
$project = id(new PhabricatorRepositoryArcanistProject())->load($this->id);
|
||||
if (!$project) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
$repositories = id(new PhabricatorRepository())->loadAll();
|
||||
$repos = array(
|
||||
0 => 'None',
|
||||
);
|
||||
foreach ($repositories as $repository) {
|
||||
$callsign = $repository->getCallsign();
|
||||
$name = $repository->getname();
|
||||
$repos[$repository->getID()] = "r{$callsign} ({$name})";
|
||||
}
|
||||
|
||||
if ($request->isFormPost()) {
|
||||
$repo_id = $request->getInt('repository', 0);
|
||||
if (isset($repos[$repo_id])) {
|
||||
$project->setRepositoryID($repo_id);
|
||||
$project->save();
|
||||
|
||||
return id(new AphrontRedirectResponse())
|
||||
->setURI('/repository/');
|
||||
}
|
||||
}
|
||||
|
||||
$form = id(new AphrontFormView())
|
||||
->setUser($user)
|
||||
->appendChild(
|
||||
id(new AphrontFormStaticControl())
|
||||
->setLabel('Name')
|
||||
->setValue($project->getName()))
|
||||
->appendChild(
|
||||
id(new AphrontFormStaticControl())
|
||||
->setLabel('PHID')
|
||||
->setValue($project->getPHID()))
|
||||
->appendChild(
|
||||
id(new AphrontFormSelectControl())
|
||||
->setLabel('Repository')
|
||||
->setOptions($repos)
|
||||
->setName('repository')
|
||||
->setValue($project->getRepositoryID()))
|
||||
->appendChild(
|
||||
id(new AphrontFormSubmitControl())
|
||||
->addCancelButton('/repository/')
|
||||
->setValue('Save'));
|
||||
|
||||
$panel = new AphrontPanelView();
|
||||
$panel->setWidth(AphrontPanelView::WIDTH_FORM);
|
||||
$panel->setHeader('Edit Arcanist Project');
|
||||
$panel->appendChild($form);
|
||||
|
||||
return $this->buildStandardPageResponse(
|
||||
$panel,
|
||||
array(
|
||||
'title' => 'Edit Project',
|
||||
));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* This file is automatically generated. Lint this module to rebuild it.
|
||||
* @generated
|
||||
*/
|
||||
|
||||
|
||||
|
||||
phutil_require_module('phabricator', 'aphront/response/404');
|
||||
phutil_require_module('phabricator', 'aphront/response/redirect');
|
||||
phutil_require_module('phabricator', 'applications/repository/controller/base');
|
||||
phutil_require_module('phabricator', 'applications/repository/storage/arcanistproject');
|
||||
phutil_require_module('phabricator', 'applications/repository/storage/repository');
|
||||
phutil_require_module('phabricator', 'view/form/base');
|
||||
phutil_require_module('phabricator', 'view/form/control/submit');
|
||||
phutil_require_module('phabricator', 'view/layout/panel');
|
||||
|
||||
phutil_require_module('phutil', 'utils');
|
||||
|
||||
|
||||
phutil_require_source('PhabricatorRepositoryArcanistProjectEditController.php');
|
|
@ -86,8 +86,53 @@ class PhabricatorRepositoryListController
|
|||
$panel->setCreateButton('Create New Repository', '/repository/create/');
|
||||
$panel->appendChild($table);
|
||||
|
||||
$projects = id(new PhabricatorRepositoryArcanistProject())->loadAll();
|
||||
|
||||
$rows = array();
|
||||
foreach ($projects as $project) {
|
||||
$repo = idx($repos, $project->getRepositoryID());
|
||||
if ($repo) {
|
||||
$repo_name = phutil_escape_html($repo->getName());
|
||||
} else {
|
||||
$repo_name = '-';
|
||||
}
|
||||
|
||||
$rows[] = array(
|
||||
phutil_escape_html($project->getName()),
|
||||
$repo_name,
|
||||
phutil_render_tag(
|
||||
'a',
|
||||
array(
|
||||
'href' => '/repository/project/'.$project->getID().'/',
|
||||
'class' => 'button grey small',
|
||||
),
|
||||
'Edit'),
|
||||
);
|
||||
}
|
||||
|
||||
$project_table = new AphrontTableView($rows);
|
||||
$project_table->setHeaders(
|
||||
array(
|
||||
'Project ID',
|
||||
'Repository',
|
||||
'',
|
||||
));
|
||||
$project_table->setColumnClasses(
|
||||
array(
|
||||
'',
|
||||
'wide',
|
||||
'action',
|
||||
));
|
||||
|
||||
$project_panel = new AphrontPanelView();
|
||||
$project_panel->setHeader('Arcanist Projects');
|
||||
$project_panel->appendChild($project_table);
|
||||
|
||||
return $this->buildStandardPageResponse(
|
||||
$panel,
|
||||
array(
|
||||
$panel,
|
||||
$project_panel,
|
||||
),
|
||||
array(
|
||||
'title' => 'Repository List',
|
||||
));
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
phutil_require_module('phabricator', 'applications/repository/constants/repositorytype');
|
||||
phutil_require_module('phabricator', 'applications/repository/controller/base');
|
||||
phutil_require_module('phabricator', 'applications/repository/storage/arcanistproject');
|
||||
phutil_require_module('phabricator', 'applications/repository/storage/repository');
|
||||
phutil_require_module('phabricator', 'view/control/table');
|
||||
phutil_require_module('phabricator', 'view/layout/panel');
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Copyright 2011 Facebook, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
class PhabricatorRepositoryArcanistProject
|
||||
extends PhabricatorRepositoryDAO {
|
||||
|
||||
protected $name;
|
||||
protected $phid;
|
||||
protected $repositoryID;
|
||||
|
||||
public function getConfiguration() {
|
||||
return array(
|
||||
self::CONFIG_AUX_PHID => true,
|
||||
self::CONFIG_TIMESTAMPS => false,
|
||||
) + parent::getConfiguration();
|
||||
}
|
||||
|
||||
public function generatePHID() {
|
||||
return PhabricatorPHID::generateNewPHID('APRJ');
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
/**
|
||||
* This file is automatically generated. Lint this module to rebuild it.
|
||||
* @generated
|
||||
*/
|
||||
|
||||
|
||||
|
||||
phutil_require_module('phabricator', 'applications/phid/storage/phid');
|
||||
phutil_require_module('phabricator', 'applications/repository/storage/base');
|
||||
|
||||
|
||||
phutil_require_source('PhabricatorRepositoryArcanistProject.php');
|
Loading…
Reference in a new issue