From 2fc8e06d816c927db4df212b690051c026dfa127 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Fri, 9 Dec 2011 23:10:31 +0100 Subject: [PATCH 1/6] hg repos must not be hosted somewhere in particular, but detection may become expensive. Additionally, suppress warnings and support file://-local repos --- src/Composer/Repository/Vcs/HgDriver.php | 15 +++++---------- src/Composer/Repository/Vcs/SvnDriver.php | 8 ++++---- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/Composer/Repository/Vcs/HgDriver.php b/src/Composer/Repository/Vcs/HgDriver.php index 29af3199b..b51dcaf52 100644 --- a/src/Composer/Repository/Vcs/HgDriver.php +++ b/src/Composer/Repository/Vcs/HgDriver.php @@ -172,16 +172,11 @@ class HgDriver implements VcsDriverInterface */ public static function supports($url, $deep = false) { - if (preg_match('#(^(?:https?|ssh)://(?:[^@]@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) { - return true; - } - - if (!$deep) { - return false; - } - - exec(sprintf('hg identify %s', escapeshellarg($url)), $output); + if ($deep) { + exec(sprintf('hg identify %s', escapeshellarg($url)), $outputIgnored, $exit); + return $exit == 0; + } - return (boolean)$output; + return false; } } diff --git a/src/Composer/Repository/Vcs/SvnDriver.php b/src/Composer/Repository/Vcs/SvnDriver.php index a1574b6b8..23ec54e81 100644 --- a/src/Composer/Repository/Vcs/SvnDriver.php +++ b/src/Composer/Repository/Vcs/SvnDriver.php @@ -174,11 +174,11 @@ class SvnDriver implements VcsDriverInterface return true; } - if (!$deep) { - return false; + if ($deep) { + @exec(sprintf('svn info --non-interactive %s 2>/dev/null', escapeshellarg($url)), $outputIgnored, $exit); + return $exit == 0; } - exec(sprintf('svn info --non-interactive %s', escapeshellarg($url)), $output); - return preg_match('{^Repository UUID:}m', implode("\n", $output)) >= 1; + return false; } } From 4e1cb32f8c2b311998df0ed5f7396a6cec478035 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Fri, 9 Dec 2011 23:37:52 +0100 Subject: [PATCH 2/6] Allow for file://-URLs here as well --- src/Composer/Repository/ComposerRepository.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Composer/Repository/ComposerRepository.php b/src/Composer/Repository/ComposerRepository.php index f704c23ea..d57201f9f 100644 --- a/src/Composer/Repository/ComposerRepository.php +++ b/src/Composer/Repository/ComposerRepository.php @@ -26,7 +26,8 @@ class ComposerRepository extends ArrayRepository public function __construct(array $config) { - if (!preg_match('{^https?://}', $config['url'])) { + if (!preg_match('{^\w+://}', $config['url'])) { + // assume http as the default protocol $config['url'] = 'http://'.$config['url']; } $config['url'] = rtrim($config['url'], '/'); From 7cdb8b6b3b513a9d79569d86adda8d98e98d4806 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Sat, 10 Dec 2011 14:11:51 +0100 Subject: [PATCH 3/6] Some changes as suggested in the pr --- src/Composer/Repository/Vcs/HgDriver.php | 14 +++++++++----- src/Composer/Repository/Vcs/SvnDriver.php | 10 +++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/Composer/Repository/Vcs/HgDriver.php b/src/Composer/Repository/Vcs/HgDriver.php index b51dcaf52..eed1ffd6a 100644 --- a/src/Composer/Repository/Vcs/HgDriver.php +++ b/src/Composer/Repository/Vcs/HgDriver.php @@ -172,11 +172,15 @@ class HgDriver implements VcsDriverInterface */ public static function supports($url, $deep = false) { - if ($deep) { - exec(sprintf('hg identify %s', escapeshellarg($url)), $outputIgnored, $exit); - return $exit == 0; - } + if (preg_match('#(^(?:https?|ssh)://(?:[^@]@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) { + return true; + } + + if (!$deep) { + return false; + } - return false; + exec(sprintf('hg identify %s', escapeshellarg($url)), null, $exit); + return $exit == 0; } } diff --git a/src/Composer/Repository/Vcs/SvnDriver.php b/src/Composer/Repository/Vcs/SvnDriver.php index 23ec54e81..4518660b5 100644 --- a/src/Composer/Repository/Vcs/SvnDriver.php +++ b/src/Composer/Repository/Vcs/SvnDriver.php @@ -174,11 +174,11 @@ class SvnDriver implements VcsDriverInterface return true; } - if ($deep) { - @exec(sprintf('svn info --non-interactive %s 2>/dev/null', escapeshellarg($url)), $outputIgnored, $exit); - return $exit == 0; + if (!$deep) { + return false; } - - return false; + + @exec(sprintf('svn info --non-interactive %s 2>/dev/null', escapeshellarg($url)), null, $exit); + return $exit == 0; } } From f24164dc165479d61b325d6954f12f0295720fb8 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Sat, 10 Dec 2011 14:15:00 +0100 Subject: [PATCH 4/6] forgot this when testing --- src/Composer/Repository/Vcs/SvnDriver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Composer/Repository/Vcs/SvnDriver.php b/src/Composer/Repository/Vcs/SvnDriver.php index 4518660b5..38918ca72 100644 --- a/src/Composer/Repository/Vcs/SvnDriver.php +++ b/src/Composer/Repository/Vcs/SvnDriver.php @@ -178,7 +178,7 @@ class SvnDriver implements VcsDriverInterface return false; } - @exec(sprintf('svn info --non-interactive %s 2>/dev/null', escapeshellarg($url)), null, $exit); + exec(sprintf('svn info --non-interactive %s 2>/dev/null', escapeshellarg($url)), null, $exit); return $exit == 0; } } From 8ab60b70308bf000efd23f4c0ba824b225b8bd53 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Sat, 10 Dec 2011 14:23:37 +0100 Subject: [PATCH 5/6] Still did not get it right --- src/Composer/Repository/Vcs/HgDriver.php | 2 +- src/Composer/Repository/Vcs/SvnDriver.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Composer/Repository/Vcs/HgDriver.php b/src/Composer/Repository/Vcs/HgDriver.php index eed1ffd6a..ffd2d3100 100644 --- a/src/Composer/Repository/Vcs/HgDriver.php +++ b/src/Composer/Repository/Vcs/HgDriver.php @@ -180,7 +180,7 @@ class HgDriver implements VcsDriverInterface return false; } - exec(sprintf('hg identify %s', escapeshellarg($url)), null, $exit); + exec(sprintf('hg identify %s', escapeshellarg($url)), $ignored, $exit); return $exit == 0; } } diff --git a/src/Composer/Repository/Vcs/SvnDriver.php b/src/Composer/Repository/Vcs/SvnDriver.php index 38918ca72..9d8d555ad 100644 --- a/src/Composer/Repository/Vcs/SvnDriver.php +++ b/src/Composer/Repository/Vcs/SvnDriver.php @@ -178,7 +178,7 @@ class SvnDriver implements VcsDriverInterface return false; } - exec(sprintf('svn info --non-interactive %s 2>/dev/null', escapeshellarg($url)), null, $exit); + exec(sprintf('svn info --non-interactive %s 2>/dev/null', escapeshellarg($url)), $ignored, $exit); return $exit == 0; } } From ebbc807de044dff0ba870bb589cb06310319c09c Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Mon, 12 Dec 2011 10:57:57 +0100 Subject: [PATCH 6/6] Fix whitespaces and add strict return code checking --- src/Composer/Repository/ComposerRepository.php | 2 +- src/Composer/Repository/Vcs/HgDriver.php | 4 ++-- src/Composer/Repository/Vcs/SvnDriver.php | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Composer/Repository/ComposerRepository.php b/src/Composer/Repository/ComposerRepository.php index d57201f9f..be1fd469b 100644 --- a/src/Composer/Repository/ComposerRepository.php +++ b/src/Composer/Repository/ComposerRepository.php @@ -27,7 +27,7 @@ class ComposerRepository extends ArrayRepository public function __construct(array $config) { if (!preg_match('{^\w+://}', $config['url'])) { - // assume http as the default protocol + // assume http as the default protocol $config['url'] = 'http://'.$config['url']; } $config['url'] = rtrim($config['url'], '/'); diff --git a/src/Composer/Repository/Vcs/HgDriver.php b/src/Composer/Repository/Vcs/HgDriver.php index ffd2d3100..23a4ebebc 100644 --- a/src/Composer/Repository/Vcs/HgDriver.php +++ b/src/Composer/Repository/Vcs/HgDriver.php @@ -175,12 +175,12 @@ class HgDriver implements VcsDriverInterface if (preg_match('#(^(?:https?|ssh)://(?:[^@]@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) { return true; } - + if (!$deep) { return false; } exec(sprintf('hg identify %s', escapeshellarg($url)), $ignored, $exit); - return $exit == 0; + return $exit === 0; } } diff --git a/src/Composer/Repository/Vcs/SvnDriver.php b/src/Composer/Repository/Vcs/SvnDriver.php index 9d8d555ad..c968dfab7 100644 --- a/src/Composer/Repository/Vcs/SvnDriver.php +++ b/src/Composer/Repository/Vcs/SvnDriver.php @@ -177,8 +177,8 @@ class SvnDriver implements VcsDriverInterface if (!$deep) { return false; } - + exec(sprintf('svn info --non-interactive %s 2>/dev/null', escapeshellarg($url)), $ignored, $exit); - return $exit == 0; + return $exit === 0; } }