Adds support for gitlab install in subfolder
Since gitlab can be hosted on any url also subdirectories should be supported. (e.g https://mycompany.com/gitlab). This supports only http and https protocols since the gitlab api url is derived from the package repository url. And the ssh protocol doesn't support folders this way.pull/4633/head
parent
fbab2bfa17
commit
b471440ea0
|
@ -70,7 +70,7 @@ class GitLabDriver extends VcsDriver
|
||||||
*/
|
*/
|
||||||
public function initialize()
|
public function initialize()
|
||||||
{
|
{
|
||||||
if (!preg_match('#^((https?)://([^/]+)/|git@([^:]+):)([^/]+)/(.+?)(?:\.git|/)?$#', $this->url, $match)) {
|
if (!preg_match('#^((https?)://([0-9a-zA-Z\./]+)/|git@([^:]+):)([^/]+)/(.+?)(?:\.git|/)?$#', $this->url, $match)) {
|
||||||
throw new \InvalidArgumentException('The URL provided is invalid. It must be the HTTP URL of a GitLab project.');
|
throw new \InvalidArgumentException('The URL provided is invalid. It must be the HTTP URL of a GitLab project.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -217,4 +217,14 @@ JSON;
|
||||||
array('http://example.com/foo/bar', false),
|
array('http://example.com/foo/bar', false),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGitlabSubDirectory()
|
||||||
|
{
|
||||||
|
$url = 'https://mycompany.com/gitlab/mygroup/myproject';
|
||||||
|
$apiUrl = 'https://mycompany.com/gitlab/api/v3/projects/mygroup%2Fmyproject';
|
||||||
|
|
||||||
|
$driver = new GitLabDriver(array('url' => $url), $this->io->reveal(), $this->config, $this->process->reveal(), $this->remoteFilesystem->reveal());
|
||||||
|
$driver->initialize();
|
||||||
|
$this->assertEquals($apiUrl, $driver->getApiUrl(), 'API URL is derived from the repository URL');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue