1
0
Fork 0

Moved config option to not save subversion credentials to repository configuration, added documentation.

pull/3272/head
Bastian Hofmann 2014-09-16 15:16:55 +02:00
parent 0d0ed59e5c
commit 204fc207fa
4 changed files with 53 additions and 7 deletions

View File

@ -345,6 +345,37 @@ If the package is in a sub-directory, e.g. `/trunk/foo/bar/composer.json` and
setting the `"package-path"` option to the sub-directory, in this example it setting the `"package-path"` option to the sub-directory, in this example it
would be `"package-path": "foo/bar/"`. would be `"package-path": "foo/bar/"`.
If you have a private Subversion repository you can safe credentials in the
http-basic section of your config (See [Schema](04-schema.md)):
```json
{
"http-basic": {
"svn.example.org": {
"username": "username",
"password": "password"
}
}
}
```
If your Subversion client is configured to store credentials by default these
credentials will be saved for the current user and existing saved credentials
for this server will be overwritten. To change this behavior by setting the
`"cache-credentials"` option in your repository configuration:
```json
{
"repositories": [
{
"type": "vcs",
"url": "http://svn.example.org/projectA/",
"cache-credentials": false
}
]
}
```
### PEAR ### PEAR
It is possible to install packages from any PEAR channel by using the `pear` It is possible to install packages from any PEAR channel by using the `pear`
@ -494,7 +525,7 @@ there are some use cases for hosting your own repository.
might want to keep them separate to packagist. An example of this would be might want to keep them separate to packagist. An example of this would be
wordpress plugins. wordpress plugins.
For hosting your own packages, a native `composer` type of repository is For hosting your own packages, a native `composer` type of repository is
recommended, which provides the best performance. recommended, which provides the best performance.
There are a few tools that can help you create a `composer` repository. There are a few tools that can help you create a `composer` repository.

View File

@ -27,6 +27,10 @@ use Composer\Downloader\TransportException;
*/ */
class SvnDriver extends VcsDriver class SvnDriver extends VcsDriver
{ {
/**
* @var Cache
*/
protected $cache; protected $cache;
protected $baseUrl; protected $baseUrl;
protected $tags; protected $tags;
@ -38,6 +42,7 @@ class SvnDriver extends VcsDriver
protected $branchesPath = 'branches'; protected $branchesPath = 'branches';
protected $tagsPath = 'tags'; protected $tagsPath = 'tags';
protected $packagePath = ''; protected $packagePath = '';
protected $cacheCredentials = true;
/** /**
* @var \Composer\Util\Svn * @var \Composer\Util\Svn
@ -62,6 +67,9 @@ class SvnDriver extends VcsDriver
if (isset($this->repoConfig['tags-path'])) { if (isset($this->repoConfig['tags-path'])) {
$this->tagsPath = $this->repoConfig['tags-path']; $this->tagsPath = $this->repoConfig['tags-path'];
} }
if (array_key_exists('cache-credentials', $this->repoConfig)) {
$this->cacheCredentials = (bool) $this->repoConfig['cache-credentials'];
}
if (isset($this->repoConfig['package-path'])) { if (isset($this->repoConfig['package-path'])) {
$this->packagePath = '/' . trim($this->repoConfig['package-path'], '/'); $this->packagePath = '/' . trim($this->repoConfig['package-path'], '/');
} }
@ -307,6 +315,7 @@ class SvnDriver extends VcsDriver
{ {
if (null === $this->util) { if (null === $this->util) {
$this->util = new SvnUtil($this->baseUrl, $this->io, $this->config, $this->process); $this->util = new SvnUtil($this->baseUrl, $this->io, $this->config, $this->process);
$this->util->setCacheCredentials($this->cacheCredentials);
} }
try { try {

View File

@ -147,6 +147,14 @@ class Svn
); );
} }
/**
* @param boolean $cacheCredentials
*/
public function setCacheCredentials($cacheCredentials)
{
$this->cacheCredentials = $cacheCredentials;
}
/** /**
* Repositories requests credentials, let's put them in. * Repositories requests credentials, let's put them in.
* *
@ -295,10 +303,6 @@ class Svn
$this->credentials['username'] = $authConfig[$host]['username']; $this->credentials['username'] = $authConfig[$host]['username'];
$this->credentials['password'] = $authConfig[$host]['password']; $this->credentials['password'] = $authConfig[$host]['password'];
if (array_key_exists('cacheCredentials', $authConfig[$host])) {
$this->cacheCredentials = (bool) $authConfig[$host]['cacheCredentials'];
}
return $this->hasAuth = true; return $this->hasAuth = true;
} }

View File

@ -81,13 +81,14 @@ class SvnTest extends \PHPUnit_Framework_TestCase
array( array(
'config' => array( 'config' => array(
'http-basic' => array( 'http-basic' => array(
'svn.apache.org' => array('username' => 'foo', 'password' => 'bar', 'cacheCredentials' => true) 'svn.apache.org' => array('username' => 'foo', 'password' => 'bar')
) )
) )
) )
); );
$svn = new Svn($url, new NullIO, $config); $svn = new Svn($url, new NullIO, $config);
$svn->setCacheCredentials(true);
$reflMethod = new \ReflectionMethod('Composer\\Util\\Svn', 'getCredentialString'); $reflMethod = new \ReflectionMethod('Composer\\Util\\Svn', 'getCredentialString');
$reflMethod->setAccessible(true); $reflMethod->setAccessible(true);
@ -103,13 +104,14 @@ class SvnTest extends \PHPUnit_Framework_TestCase
array( array(
'config' => array( 'config' => array(
'http-basic' => array( 'http-basic' => array(
'svn.apache.org' => array('username' => 'foo', 'password' => 'bar', 'cacheCredentials' => false) 'svn.apache.org' => array('username' => 'foo', 'password' => 'bar')
) )
) )
) )
); );
$svn = new Svn($url, new NullIO, $config); $svn = new Svn($url, new NullIO, $config);
$svn->setCacheCredentials(false);
$reflMethod = new \ReflectionMethod('Composer\\Util\\Svn', 'getCredentialString'); $reflMethod = new \ReflectionMethod('Composer\\Util\\Svn', 'getCredentialString');
$reflMethod->setAccessible(true); $reflMethod->setAccessible(true);