1
0
Fork 0

Merge remote-tracking branch 'digitalkaoz/issue_801'

Conflicts:
	src/Composer/Downloader/VcsDownloader.php
pull/1008/merge
Jordi Boggiano 2012-08-18 15:31:20 +02:00
commit 1aed88003f
4 changed files with 60 additions and 1 deletions

11
src/Composer/Downloader/GitDownloader.php Normal file → Executable file
View File

@ -233,4 +233,15 @@ class GitDownloader extends VcsDownloader
$this->process->execute($cmd, $ignoredOutput, $path);
}
}
protected function getCommitLogs($sourceReference, $targetReference, $path)
{
$command = sprintf('cd %s && git log %s..%s --pretty=format:"%%h - %%an: %%s"', escapeshellarg($path), $sourceReference, $targetReference);
if (0 !== $this->process->execute($command, $output)) {
throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput());
}
return $output;
}
}

11
src/Composer/Downloader/HgDownloader.php Normal file → Executable file
View File

@ -58,4 +58,15 @@ class HgDownloader extends VcsDownloader
return trim($output) ?: null;
}
protected function getCommitLogs($sourceReference, $targetReference, $path)
{
$command = sprintf('cd %s && hg log -r %s:%s --style compact', escapeshellarg($path), $sourceReference, $targetReference);
if (0 !== $this->process->execute($command, $output)) {
throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput());
}
return $output;
}
}

11
src/Composer/Downloader/SvnDownloader.php Normal file → Executable file
View File

@ -78,4 +78,15 @@ class SvnDownloader extends VcsDownloader
);
}
}
protected function getCommitLogs($sourceReference, $targetReference, $path)
{
$command = sprintf('cd %s && svn log -r%s:%s --incremental', escapeshellarg($path), $sourceReference, $targetReference);
if (0 !== $this->process->execute($command, $output)) {
throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput());
}
return $output;
}
}

View File

@ -65,9 +65,25 @@ abstract class VcsDownloader implements DownloaderInterface
throw new \InvalidArgumentException('Package '.$target->getPrettyName().' is missing reference information');
}
$this->io->write(" - Updating <info>" . $target->getName() . "</info> (<comment>" . $target->getPrettyVersion() . "</comment>)");
if ($initial->getPrettyVersion() == $target->getPrettyVersion()) {
$from = $initial->getSourceReference();
$to = $target->getSourceReference();
} else {
$from = $initial->getPrettyVersion();
$to = $target->getPrettyVersion();
}
$this->io->write(" - Updating <info>" . $target->getName() . "</info> from (<comment>" . $from . "</comment>) to (<comment>" . $to . "</comment>)");
$this->enforceCleanDirectory($path);
$this->doUpdate($initial, $target, $path);
//print the commit logs if in verbose mode
if ($this->io->isVerbose()) {
$logs = $this->getCommitLogs($initial->getSourceReference(), $target->getSourceReference(), $path);
$this->io->write($logs);
}
$this->io->write('');
}
@ -119,4 +135,14 @@ abstract class VcsDownloader implements DownloaderInterface
* @return string|null changes or null
*/
abstract public function getLocalChanges($path);
/**
* Fetches the commit logs between two commits
*
* @param string $fromReference the source reference
* @param string $toReference the target reference
* @param string $path the package path
* @return string
*/
abstract protected function getCommitLogs($fromReference, $toReference, $path);
}