Browse Source

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

Bastian Hofmann 10 years ago
parent
commit
204fc207fa

+ 32 - 1
doc/05-repositories.md

@@ -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
 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
 
 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
   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.
 
 There are a few tools that can help you create a `composer` repository.

+ 9 - 0
src/Composer/Repository/Vcs/SvnDriver.php

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

+ 8 - 4
src/Composer/Util/Svn.php

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

+ 4 - 2
tests/Composer/Test/Util/SvnTest.php

@@ -81,13 +81,14 @@ class SvnTest extends \PHPUnit_Framework_TestCase
             array(
                 'config' => 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->setCacheCredentials(true);
         $reflMethod = new \ReflectionMethod('Composer\\Util\\Svn', 'getCredentialString');
         $reflMethod->setAccessible(true);
 
@@ -103,13 +104,14 @@ class SvnTest extends \PHPUnit_Framework_TestCase
             array(
                 'config' => 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->setCacheCredentials(false);
         $reflMethod = new \ReflectionMethod('Composer\\Util\\Svn', 'getCredentialString');
         $reflMethod->setAccessible(true);