mirror of
https://we.phorge.it/source/phorge.git
synced 2025-04-07 18:08:31 +02:00
When creating a repository in Diffusion, prompt for "Create" or "Import" first
Summary: Ref T2230. This will need some more refinement, but basically it adds a "Create" vs "Import" step before we go through the paged workflow. - If you choose "Create", we skip the remote URI / auth stuff, and then set the "hosted" flag. - If you choose "Import", we do what we do now. Test Plan: Created and imported repos. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T2230 Differential Revision: https://secure.phabricator.com/D7475
This commit is contained in:
parent
3607bd487c
commit
cd674931fc
7 changed files with 252 additions and 96 deletions
|
@ -527,6 +527,7 @@ phutil_register_library_map(array(
|
||||||
'DiffusionRepositoryEditPolicyController' => 'applications/diffusion/controller/DiffusionRepositoryEditPolicyController.php',
|
'DiffusionRepositoryEditPolicyController' => 'applications/diffusion/controller/DiffusionRepositoryEditPolicyController.php',
|
||||||
'DiffusionRepositoryEditSubversionController' => 'applications/diffusion/controller/DiffusionRepositoryEditSubversionController.php',
|
'DiffusionRepositoryEditSubversionController' => 'applications/diffusion/controller/DiffusionRepositoryEditSubversionController.php',
|
||||||
'DiffusionRepositoryListController' => 'applications/diffusion/controller/DiffusionRepositoryListController.php',
|
'DiffusionRepositoryListController' => 'applications/diffusion/controller/DiffusionRepositoryListController.php',
|
||||||
|
'DiffusionRepositoryNewController' => 'applications/diffusion/controller/DiffusionRepositoryNewController.php',
|
||||||
'DiffusionRepositoryPath' => 'applications/diffusion/data/DiffusionRepositoryPath.php',
|
'DiffusionRepositoryPath' => 'applications/diffusion/data/DiffusionRepositoryPath.php',
|
||||||
'DiffusionRepositoryRef' => 'applications/diffusion/data/DiffusionRepositoryRef.php',
|
'DiffusionRepositoryRef' => 'applications/diffusion/data/DiffusionRepositoryRef.php',
|
||||||
'DiffusionRepositoryTag' => 'applications/diffusion/data/DiffusionRepositoryTag.php',
|
'DiffusionRepositoryTag' => 'applications/diffusion/data/DiffusionRepositoryTag.php',
|
||||||
|
@ -2727,6 +2728,7 @@ phutil_register_library_map(array(
|
||||||
0 => 'DiffusionController',
|
0 => 'DiffusionController',
|
||||||
1 => 'PhabricatorApplicationSearchResultsControllerInterface',
|
1 => 'PhabricatorApplicationSearchResultsControllerInterface',
|
||||||
),
|
),
|
||||||
|
'DiffusionRepositoryNewController' => 'DiffusionController',
|
||||||
'DiffusionSSHGitReceivePackWorkflow' => 'DiffusionSSHGitWorkflow',
|
'DiffusionSSHGitReceivePackWorkflow' => 'DiffusionSSHGitWorkflow',
|
||||||
'DiffusionSSHGitUploadPackWorkflow' => 'DiffusionSSHGitWorkflow',
|
'DiffusionSSHGitUploadPackWorkflow' => 'DiffusionSSHGitWorkflow',
|
||||||
'DiffusionSSHGitWorkflow' => 'DiffusionSSHWorkflow',
|
'DiffusionSSHGitWorkflow' => 'DiffusionSSHWorkflow',
|
||||||
|
|
|
@ -43,7 +43,9 @@ final class PhabricatorApplicationDiffusion extends PhabricatorApplication {
|
||||||
'/diffusion/' => array(
|
'/diffusion/' => array(
|
||||||
'(?:query/(?P<queryKey>[^/]+)/)?'
|
'(?:query/(?P<queryKey>[^/]+)/)?'
|
||||||
=> 'DiffusionRepositoryListController',
|
=> 'DiffusionRepositoryListController',
|
||||||
'create/' => 'DiffusionRepositoryCreateController',
|
'new/' => 'DiffusionRepositoryNewController',
|
||||||
|
'(?P<edit>create)/' => 'DiffusionRepositoryCreateController',
|
||||||
|
'(?P<edit>import)/' => 'DiffusionRepositoryCreateController',
|
||||||
'(?P<callsign>[A-Z]+)/' => array(
|
'(?P<callsign>[A-Z]+)/' => array(
|
||||||
'' => 'DiffusionRepositoryController',
|
'' => 'DiffusionRepositoryController',
|
||||||
|
|
||||||
|
|
|
@ -8,18 +8,20 @@ final class DiffusionRepositoryCreateController
|
||||||
|
|
||||||
public function willProcessRequest(array $data) {
|
public function willProcessRequest(array $data) {
|
||||||
parent::willProcessRequest($data);
|
parent::willProcessRequest($data);
|
||||||
$this->edit = idx($data, 'edit');
|
$this->edit = $data['edit'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function processRequest() {
|
public function processRequest() {
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$viewer = $request->getUser();
|
$viewer = $request->getUser();
|
||||||
|
|
||||||
// NOTE: We can end up here via either "Create Repository" or via
|
// NOTE: We can end up here via either "Create Repository", or via
|
||||||
// "Edit Remote". In the latter case, we show only a few of the pages.
|
// "Import Repository", or via "Edit Remote". In the latter case, we show
|
||||||
|
// only a few of the pages.
|
||||||
|
|
||||||
$repository = null;
|
$repository = null;
|
||||||
if ($this->edit) {
|
switch ($this->edit) {
|
||||||
|
case 'remote':
|
||||||
$repository = $this->getDiffusionRequest()->getRepository();
|
$repository = $this->getDiffusionRequest()->getRepository();
|
||||||
|
|
||||||
// Make sure we have CAN_EDIT.
|
// Make sure we have CAN_EDIT.
|
||||||
|
@ -31,11 +33,16 @@ final class DiffusionRepositoryCreateController
|
||||||
$this->setRepository($repository);
|
$this->setRepository($repository);
|
||||||
|
|
||||||
$cancel_uri = $this->getRepositoryControllerURI($repository, 'edit/');
|
$cancel_uri = $this->getRepositoryControllerURI($repository, 'edit/');
|
||||||
} else {
|
break;
|
||||||
|
case 'import':
|
||||||
|
case 'create':
|
||||||
$this->requireApplicationCapability(
|
$this->requireApplicationCapability(
|
||||||
DiffusionCapabilityCreateRepositories::CAPABILITY);
|
DiffusionCapabilityCreateRepositories::CAPABILITY);
|
||||||
|
|
||||||
$cancel_uri = $this->getApplicationURI();
|
$cancel_uri = $this->getApplicationURI('new/');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Exception("Invalid edit operation!");
|
||||||
}
|
}
|
||||||
|
|
||||||
$form = id(new PHUIPagedFormView())
|
$form = id(new PHUIPagedFormView())
|
||||||
|
@ -49,7 +56,14 @@ final class DiffusionRepositoryCreateController
|
||||||
->addPage('remote-uri', $this->buildRemoteURIPage())
|
->addPage('remote-uri', $this->buildRemoteURIPage())
|
||||||
->addPage('auth', $this->buildAuthPage());
|
->addPage('auth', $this->buildAuthPage());
|
||||||
break;
|
break;
|
||||||
default:
|
case 'create':
|
||||||
|
$title = pht('Create Repository');
|
||||||
|
$form
|
||||||
|
->addPage('vcs', $this->buildVCSPage())
|
||||||
|
->addPage('name', $this->buildNamePage())
|
||||||
|
->addPage('done', $this->buildDonePage());
|
||||||
|
break;
|
||||||
|
case 'import':
|
||||||
$title = pht('Import Repository');
|
$title = pht('Import Repository');
|
||||||
$form
|
$form
|
||||||
->addPage('vcs', $this->buildVCSPage())
|
->addPage('vcs', $this->buildVCSPage())
|
||||||
|
@ -63,7 +77,10 @@ final class DiffusionRepositoryCreateController
|
||||||
if ($request->isFormPost()) {
|
if ($request->isFormPost()) {
|
||||||
$form->readFromRequest($request);
|
$form->readFromRequest($request);
|
||||||
if ($form->isComplete()) {
|
if ($form->isComplete()) {
|
||||||
$is_create = ($this->edit === null);
|
|
||||||
|
$is_create = ($this->edit === 'import' || $this->edit === 'create');
|
||||||
|
$is_auth = ($this->edit == 'import' || $this->edit == 'remote');
|
||||||
|
$is_init = ($this->edit == 'create');
|
||||||
|
|
||||||
if ($is_create) {
|
if ($is_create) {
|
||||||
$repository = PhabricatorRepository::initializeNewRepository(
|
$repository = PhabricatorRepository::initializeNewRepository(
|
||||||
|
@ -82,6 +99,7 @@ final class DiffusionRepositoryCreateController
|
||||||
$type_ssh_keyfile = PhabricatorRepositoryTransaction::TYPE_SSH_KEYFILE;
|
$type_ssh_keyfile = PhabricatorRepositoryTransaction::TYPE_SSH_KEYFILE;
|
||||||
$type_http_login = PhabricatorRepositoryTransaction::TYPE_HTTP_LOGIN;
|
$type_http_login = PhabricatorRepositoryTransaction::TYPE_HTTP_LOGIN;
|
||||||
$type_http_pass = PhabricatorRepositoryTransaction::TYPE_HTTP_PASS;
|
$type_http_pass = PhabricatorRepositoryTransaction::TYPE_HTTP_PASS;
|
||||||
|
$type_hosting = PhabricatorRepositoryTransaction::TYPE_HOSTING;
|
||||||
|
|
||||||
$xactions = array();
|
$xactions = array();
|
||||||
|
|
||||||
|
@ -127,10 +145,18 @@ final class DiffusionRepositoryCreateController
|
||||||
->setNewValue($default_local_path);
|
->setNewValue($default_local_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($is_init) {
|
||||||
|
$xactions[] = id(clone $template)
|
||||||
|
->setTransactionType($type_hosting)
|
||||||
|
->setNewValue(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($is_auth) {
|
||||||
$xactions[] = id(clone $template)
|
$xactions[] = id(clone $template)
|
||||||
->setTransactionType($type_remote_uri)
|
->setTransactionType($type_remote_uri)
|
||||||
->setNewValue(
|
->setNewValue(
|
||||||
$form->getPage('remote-uri')->getControl('remoteURI')->getValue());
|
$form->getPage('remote-uri')->getControl('remoteURI')
|
||||||
|
->getValue());
|
||||||
|
|
||||||
$xactions[] = id(clone $template)
|
$xactions[] = id(clone $template)
|
||||||
->setTransactionType($type_ssh_login)
|
->setTransactionType($type_ssh_login)
|
||||||
|
@ -156,6 +182,7 @@ final class DiffusionRepositoryCreateController
|
||||||
->setTransactionType($type_http_pass)
|
->setTransactionType($type_http_pass)
|
||||||
->setNewValue(
|
->setNewValue(
|
||||||
$form->getPage('auth')->getControl('http-pass')->getValue());
|
$form->getPage('auth')->getControl('http-pass')->getValue());
|
||||||
|
}
|
||||||
|
|
||||||
id(new PhabricatorRepositoryEditor())
|
id(new PhabricatorRepositoryEditor())
|
||||||
->setContinueOnNoEffect(true)
|
->setContinueOnNoEffect(true)
|
||||||
|
@ -202,31 +229,41 @@ final class DiffusionRepositoryCreateController
|
||||||
|
|
||||||
|
|
||||||
private function buildVCSPage() {
|
private function buildVCSPage() {
|
||||||
return id(new PHUIFormPageView())
|
|
||||||
->setPageName(pht('Repository Type'))
|
$is_import = ($this->edit == 'import');
|
||||||
->setUser($this->getRequest()->getUser())
|
|
||||||
->setValidateFormPageCallback(array($this, 'validateVCSPage'))
|
if ($is_import) {
|
||||||
->addControl(
|
$git_str = pht(
|
||||||
id(new AphrontFormRadioButtonControl())
|
'Import a Git repository (for example, a repository hosted '.
|
||||||
|
'on GitHub).');
|
||||||
|
$hg_str = pht(
|
||||||
|
'Import a Mercurial repository (for example, a repository '.
|
||||||
|
'hosted on Bitbucket).');
|
||||||
|
$svn_str = pht('Import a Subversion repository.');
|
||||||
|
} else {
|
||||||
|
$git_str = pht('Create a new, empty Git repository.');
|
||||||
|
$hg_str = pht('Create a new, empty Mercurial repository.');
|
||||||
|
$svn_str = pht('Create a new, empty Subversion repository.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$control = id(new AphrontFormRadioButtonControl())
|
||||||
->setName('vcs')
|
->setName('vcs')
|
||||||
->setLabel(pht('Type'))
|
->setLabel(pht('Type'))
|
||||||
->addButton(
|
->addButton(
|
||||||
PhabricatorRepositoryType::REPOSITORY_TYPE_GIT,
|
PhabricatorRepositoryType::REPOSITORY_TYPE_GIT,
|
||||||
pht('Git'),
|
pht('Git'),
|
||||||
pht(
|
$git_str)
|
||||||
'Import a Git repository (for example, a repository hosted '.
|
|
||||||
'on GitHub).'))
|
|
||||||
->addButton(
|
->addButton(
|
||||||
PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL,
|
PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL,
|
||||||
pht('Mercurial'),
|
pht('Mercurial'),
|
||||||
pht(
|
$hg_str)
|
||||||
'Import a Mercurial repository (for example, a repository '.
|
|
||||||
'hosted on Bitbucket).'))
|
|
||||||
->addButton(
|
->addButton(
|
||||||
PhabricatorRepositoryType::REPOSITORY_TYPE_SVN,
|
PhabricatorRepositoryType::REPOSITORY_TYPE_SVN,
|
||||||
pht('Subversion'),
|
pht('Subversion'),
|
||||||
pht('Import a Subversion repository.'))
|
$svn_str);
|
||||||
->addButton(
|
|
||||||
|
if ($is_import) {
|
||||||
|
$control->addButton(
|
||||||
PhabricatorRepositoryType::REPOSITORY_TYPE_PERFORCE,
|
PhabricatorRepositoryType::REPOSITORY_TYPE_PERFORCE,
|
||||||
pht('Perforce'),
|
pht('Perforce'),
|
||||||
pht(
|
pht(
|
||||||
|
@ -241,7 +278,14 @@ final class DiffusionRepositoryCreateController
|
||||||
),
|
),
|
||||||
pht('Perforce Git Fusion'))),
|
pht('Perforce Git Fusion'))),
|
||||||
'disabled',
|
'disabled',
|
||||||
$disabled = true));
|
$disabled = true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return id(new PHUIFormPageView())
|
||||||
|
->setPageName(pht('Repository Type'))
|
||||||
|
->setUser($this->getRequest()->getUser())
|
||||||
|
->setValidateFormPageCallback(array($this, 'validateVCSPage'))
|
||||||
|
->addControl($control);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateVCSPage(PHUIFormPageView $page) {
|
public function validateVCSPage(PHUIFormPageView $page) {
|
||||||
|
@ -664,6 +708,32 @@ final class DiffusionRepositoryCreateController
|
||||||
|
|
||||||
|
|
||||||
private function buildDonePage() {
|
private function buildDonePage() {
|
||||||
|
|
||||||
|
$is_create = ($this->edit == 'create');
|
||||||
|
if ($is_create) {
|
||||||
|
$now_label = pht('Create Repository Now');
|
||||||
|
$now_caption = pht(
|
||||||
|
'Create the repository right away. This will create the repository '.
|
||||||
|
'using default settings.');
|
||||||
|
|
||||||
|
$wait_label = pht('Configure More Options First');
|
||||||
|
$wait_caption = pht(
|
||||||
|
'Configure more options before creating the repository. '.
|
||||||
|
'This will let you fine-tune settings. You can create the repository '.
|
||||||
|
'whenever you are ready.');
|
||||||
|
} else {
|
||||||
|
$now_label = pht('Start Import Now');
|
||||||
|
$now_caption = pht(
|
||||||
|
'Start importing the repository right away. This will import '.
|
||||||
|
'the entire repository using default settings.');
|
||||||
|
|
||||||
|
$wait_label = pht('Configure More Options First');
|
||||||
|
$wait_caption = pht(
|
||||||
|
'Configure more options before beginning the repository '.
|
||||||
|
'import. This will let you fine-tune settings. You can '.
|
||||||
|
'start the import whenever you are ready.');
|
||||||
|
}
|
||||||
|
|
||||||
return id(new PHUIFormPageView())
|
return id(new PHUIFormPageView())
|
||||||
->setPageName(pht('Repository Ready!'))
|
->setPageName(pht('Repository Ready!'))
|
||||||
->setValidateFormPageCallback(array($this, 'validateDonePage'))
|
->setValidateFormPageCallback(array($this, 'validateDonePage'))
|
||||||
|
@ -674,17 +744,12 @@ final class DiffusionRepositoryCreateController
|
||||||
->setLabel(pht('Start Now'))
|
->setLabel(pht('Start Now'))
|
||||||
->addButton(
|
->addButton(
|
||||||
'start',
|
'start',
|
||||||
pht('Start Import Now'),
|
$now_label,
|
||||||
pht(
|
$now_caption)
|
||||||
'Start importing the repository right away. This will import '.
|
|
||||||
'the entire repository using default settings.'))
|
|
||||||
->addButton(
|
->addButton(
|
||||||
'wait',
|
'wait',
|
||||||
pht('Configure More Options First'),
|
$wait_label,
|
||||||
pht(
|
$wait_caption));
|
||||||
'Configure more options before beginning the repository '.
|
|
||||||
'import. This will let you fine-tune settings. You can '.
|
|
||||||
'start the import whenever you are ready.')));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateDonePage(PHUIFormPageView $page) {
|
public function validateDonePage(PHUIFormPageView $page) {
|
||||||
|
|
|
@ -52,9 +52,12 @@ final class DiffusionRepositoryEditMainController
|
||||||
$policy_properties =
|
$policy_properties =
|
||||||
$this->buildPolicyProperties($repository, $policy_actions);
|
$this->buildPolicyProperties($repository, $policy_actions);
|
||||||
|
|
||||||
|
$remote_properties = null;
|
||||||
|
if (!$repository->isHosted()) {
|
||||||
$remote_properties = $this->buildRemoteProperties(
|
$remote_properties = $this->buildRemoteProperties(
|
||||||
$repository,
|
$repository,
|
||||||
$this->buildRemoteActions($repository));
|
$this->buildRemoteActions($repository));
|
||||||
|
}
|
||||||
|
|
||||||
$encoding_actions = $this->buildEncodingActions($repository);
|
$encoding_actions = $this->buildEncodingActions($repository);
|
||||||
$encoding_properties =
|
$encoding_properties =
|
||||||
|
@ -115,8 +118,11 @@ final class DiffusionRepositoryEditMainController
|
||||||
->setHeader($header)
|
->setHeader($header)
|
||||||
->addPropertyList($basic_properties)
|
->addPropertyList($basic_properties)
|
||||||
->addPropertyList($policy_properties)
|
->addPropertyList($policy_properties)
|
||||||
->addPropertyList($hosting_properties)
|
->addPropertyList($hosting_properties);
|
||||||
->addPropertyList($remote_properties);
|
|
||||||
|
if ($remote_properties) {
|
||||||
|
$obj_box->addPropertyList($remote_properties);
|
||||||
|
}
|
||||||
|
|
||||||
if ($local_properties) {
|
if ($local_properties) {
|
||||||
$obj_box->addPropertyList($local_properties);
|
$obj_box->addPropertyList($local_properties);
|
||||||
|
|
|
@ -107,8 +107,8 @@ final class DiffusionRepositoryListController extends DiffusionController
|
||||||
|
|
||||||
$crumbs->addAction(
|
$crumbs->addAction(
|
||||||
id(new PHUIListItemView())
|
id(new PHUIListItemView())
|
||||||
->setName(pht('Import Repository'))
|
->setName(pht('New Repository'))
|
||||||
->setHref($this->getApplicationURI('/create/'))
|
->setHref($this->getApplicationURI('new/'))
|
||||||
->setDisabled(!$can_create)
|
->setDisabled(!$can_create)
|
||||||
->setIcon('create'));
|
->setIcon('create'));
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class DiffusionRepositoryNewController
|
||||||
|
extends DiffusionController {
|
||||||
|
|
||||||
|
public function processRequest() {
|
||||||
|
$request = $this->getRequest();
|
||||||
|
$viewer = $request->getUser();
|
||||||
|
|
||||||
|
$this->requireApplicationCapability(
|
||||||
|
DiffusionCapabilityCreateRepositories::CAPABILITY);
|
||||||
|
|
||||||
|
if ($request->isFormPost()) {
|
||||||
|
if ($request->getStr('type')) {
|
||||||
|
switch ($request->getStr('type')) {
|
||||||
|
case 'create':
|
||||||
|
$uri = $this->getApplicationURI('create/');
|
||||||
|
break;
|
||||||
|
case 'import':
|
||||||
|
default:
|
||||||
|
$uri = $this->getApplicationURI('import/');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return id(new AphrontRedirectResponse())->setURI($uri);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$form = id(new AphrontFormView())
|
||||||
|
->setUser($viewer)
|
||||||
|
->appendChild(
|
||||||
|
id(new AphrontFormRadioButtonControl())
|
||||||
|
->setName('type')
|
||||||
|
->addButton(
|
||||||
|
'create',
|
||||||
|
pht('Create a New Hosted Repository'),
|
||||||
|
array(
|
||||||
|
pht(
|
||||||
|
'Create a new, empty repository which Phabricator will host.'),
|
||||||
|
phutil_tag('br'),
|
||||||
|
pht(
|
||||||
|
'%s: This feature is very new and barely works. Use it '.
|
||||||
|
'at your own risk! By choosing this option, you accept great '.
|
||||||
|
'mortal peril.',
|
||||||
|
phutil_tag('strong', array(), pht('BEWARE'))),
|
||||||
|
))
|
||||||
|
->addButton(
|
||||||
|
'import',
|
||||||
|
pht('Import an Existing External Repository'),
|
||||||
|
pht(
|
||||||
|
'Import a repository hosted somewhere else, like GitHub, '.
|
||||||
|
'Bitbucket, or your organization\'s existing servers. '.
|
||||||
|
'Phabricator will read changes from the repository but will '.
|
||||||
|
'not host or manage it. The authoritative master version of '.
|
||||||
|
'the repository will stay where it is now.')))
|
||||||
|
->appendChild(
|
||||||
|
id(new AphrontFormSubmitControl())
|
||||||
|
->setValue(pht('Continue'))
|
||||||
|
->addCancelButton($this->getApplicationURI()));
|
||||||
|
|
||||||
|
$crumbs = $this->buildApplicationCrumbs();
|
||||||
|
$crumbs->addCrumb(
|
||||||
|
id(new PhabricatorCrumbView())
|
||||||
|
->setName(pht('New Repository')));
|
||||||
|
|
||||||
|
$form_box = id(new PHUIObjectBoxView())
|
||||||
|
->setHeaderText(pht('Create or Import Repository'))
|
||||||
|
->setForm($form);
|
||||||
|
|
||||||
|
return $this->buildApplicationPage(
|
||||||
|
array(
|
||||||
|
$crumbs,
|
||||||
|
$form_box,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'title' => pht('New Repository'),
|
||||||
|
'device' => true,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -26,7 +26,7 @@ final class PhabricatorRepositoryPullEngine
|
||||||
|
|
||||||
$is_hg = false;
|
$is_hg = false;
|
||||||
$is_git = false;
|
$is_git = false;
|
||||||
$is_svn = true;
|
$is_svn = false;
|
||||||
|
|
||||||
$vcs = $repository->getVersionControlSystem();
|
$vcs = $repository->getVersionControlSystem();
|
||||||
$callsign = $repository->getCallsign();
|
$callsign = $repository->getCallsign();
|
||||||
|
|
Loading…
Add table
Reference in a new issue