diff --git a/src/Composer/Downloader/HgDownloader.php b/src/Composer/Downloader/HgDownloader.php index ccd81d354..090129411 100644 --- a/src/Composer/Downloader/HgDownloader.php +++ b/src/Composer/Downloader/HgDownloader.php @@ -38,7 +38,7 @@ class HgDownloader implements DownloaderInterface $url = escapeshellarg($package->getSourceUrl()); $ref = escapeshellarg($package->getSourceReference()); - system(sprintf('hg clone %s %s && cd %2$s && hg up %s', $url, $path, $ref)); + system(sprintf('(hg clone %s %s 2> /dev/null) && cd %2$s && hg up %s', $url, $path, $ref)); } /** diff --git a/src/Composer/Package/Version/VersionParser.php b/src/Composer/Package/Version/VersionParser.php index 80fb45c3c..e5006d824 100644 --- a/src/Composer/Package/Version/VersionParser.php +++ b/src/Composer/Package/Version/VersionParser.php @@ -34,7 +34,7 @@ class VersionParser { $version = trim($version); - if (preg_match('{^(?:master|trunk)(?:[.-]?dev)?$}i', $version)) { + if (preg_match('{^(?:master|trunk|default)(?:[.-]?dev)?$}i', $version)) { return '9999999-dev'; } @@ -85,7 +85,7 @@ class VersionParser { $name = trim($name); - if (in_array($name, array('master', 'trunk'))) { + if (in_array($name, array('master', 'trunk', 'default'))) { return $this->normalize($name); } diff --git a/src/Composer/Repository/Vcs/HgBitbucketDriver.php b/src/Composer/Repository/Vcs/HgBitbucketDriver.php index 9c1c82b3b..515e90d36 100644 --- a/src/Composer/Repository/Vcs/HgBitbucketDriver.php +++ b/src/Composer/Repository/Vcs/HgBitbucketDriver.php @@ -118,7 +118,6 @@ class HgBitbucketDriver implements VcsDriverInterface foreach ($tagsData as $tag => $data) { $this->tags[$tag] = $data['raw_node']; } - unset($this->tags['tip']); } return $this->tags; diff --git a/src/Composer/Repository/Vcs/HgDriver.php b/src/Composer/Repository/Vcs/HgDriver.php index 23a4ebebc..c6f64cced 100644 --- a/src/Composer/Repository/Vcs/HgDriver.php +++ b/src/Composer/Repository/Vcs/HgDriver.php @@ -41,7 +41,7 @@ class HgDriver implements VcsDriverInterface if (is_dir($this->tmpDir)) { exec(sprintf('cd %s && hg pull -u', $tmpDir), $output); } else { - exec(sprintf('hg clone %s %s', $url, $tmpDir), $output); + exec(sprintf('cd %s && hg clone %s %s', escapeshellarg(sys_get_temp_dir()), $url, $tmpDir), $output); } $this->getTags(); @@ -55,7 +55,7 @@ class HgDriver implements VcsDriverInterface { $tmpDir = escapeshellarg($this->tmpDir); if (null === $this->rootIdentifier) { - exec(sprintf('cd %s && hg tip --template "{rev}:{node|short}" --color never', $tmpDir), $output); + exec(sprintf('cd %s && hg tip --template "{node}"', $tmpDir), $output); $this->rootIdentifier = $output[0]; } @@ -94,7 +94,7 @@ class HgDriver implements VcsDriverInterface public function getComposerInformation($identifier) { if (!isset($this->infoCache[$identifier])) { - exec(sprintf('cd %s && hg cat --color never -r %s composer.json', escapeshellarg($this->tmpDir), escapeshellarg($identifier)), $output); + exec(sprintf('cd %s && hg cat -r %s composer.json', escapeshellarg($this->tmpDir), escapeshellarg($identifier)), $output); $composer = implode("\n", $output); unset($output); @@ -121,12 +121,14 @@ class HgDriver implements VcsDriverInterface public function getTags() { if (null === $this->tags) { - exec(sprintf('cd %s && hg tags --color never', escapeshellarg($this->tmpDir)), $output); + $tags = array(); + + exec(sprintf('cd %s && hg tags', escapeshellarg($this->tmpDir)), $output); foreach ($output as $tag) { - preg_match('(^([^\s]+)[\s]+[\d+]:(.*)$)', $tag, $match); - $tags[$match[1]] = $match[2]; + if (preg_match('(^([^\s]+)\s+\d+:(.*)$)', $tag, $match)) + $tags[$match[1]] = $match[2]; } - unset($tags['tip']); + $this->tags = $tags; } @@ -141,10 +143,10 @@ class HgDriver implements VcsDriverInterface if (null === $this->branches) { $branches = array(); - exec(sprintf('cd %s && hg branches --color never', escapeshellarg($this->tmpDir)), $output); + exec(sprintf('cd %s && hg branches', escapeshellarg($this->tmpDir)), $output); foreach ($output as $branch) { - preg_match('(^([^\s]+)[\s]+[\d+]:(.*)$)', $branch, $match); - $branches[$match[1]] = $match[2]; + if (preg_match('(^([^\s]+)\s+\d+:(.*)$)', $branch, $match)) + $branches[$match[1]] = $match[2]; } $this->branches = $branches; @@ -180,7 +182,7 @@ class HgDriver implements VcsDriverInterface return false; } - exec(sprintf('hg identify %s', escapeshellarg($url)), $ignored, $exit); + exec(sprintf('cd %s && hg identify %s', escapeshellarg(sys_get_temp_dir()), escapeshellarg($url)), $ignored, $exit); return $exit === 0; } } diff --git a/src/Composer/Repository/Vcs/VcsDriverInterface.php b/src/Composer/Repository/Vcs/VcsDriverInterface.php index b8e6d1269..124530905 100644 --- a/src/Composer/Repository/Vcs/VcsDriverInterface.php +++ b/src/Composer/Repository/Vcs/VcsDriverInterface.php @@ -21,7 +21,7 @@ interface VcsDriverInterface function getComposerInformation($identifier); /** - * Return the root identifier (trunk, master, ..) + * Return the root identifier (trunk, master, default/tip ..) * * @return string Identifier */