Mercurial log template and parseLog pattern modification.
Added a template for getting a controlled log; in parseLog, changed the regular expression to match the pattern used in the template (fixes issues 507 and 508).
This commit is contained in:
parent
be39d72d3c
commit
5fc3a987de
1
AUTHORS
1
AUTHORS
@ -14,6 +14,7 @@ Much appreciated contributors (in alphabetical order):
|
||||
David Feeney
|
||||
Patrick Georgi <patrick.georgi@coresystems.de>
|
||||
Ciaran Gultnieks
|
||||
Matías Halles <matias@halles.cl>
|
||||
Julien Issler
|
||||
Jerry <lxb429@gmail.com> - Chinese translation
|
||||
Benjamin Jorand <benjamin.jorand@gmail.com> - Mercurial support
|
||||
|
@ -35,6 +35,7 @@
|
||||
- Sort the project list by the display name of the project (issue 477)
|
||||
- Project creation form now has a short description field as well (issue 479)
|
||||
- Add more file extensions supported by our in-tree prettify version (issues 490 and 567)
|
||||
- Improve the parsing of hg's log output (issues 507 and 508)
|
||||
- Do not clean `<ins>` and `<del>` HTML markup from user input (issue 509)
|
||||
- Improve HTML validation by switching from `strict` to `transitional` DOCTYPE (issue 511)
|
||||
- Ignore XML parsing problems when trying to retrieve commit messages for svn (issue 518)
|
||||
|
@ -27,10 +27,13 @@
|
||||
*/
|
||||
class IDF_Scm_Mercurial extends IDF_Scm
|
||||
{
|
||||
protected $hg_log_template;
|
||||
|
||||
public function __construct($repo, $project=null)
|
||||
{
|
||||
$this->repo = $repo;
|
||||
$this->project = $project;
|
||||
$this->hg_log_template = "'".'changeset: {rev}:{node|short}\nauthor: {author}\ndate: {date|isodate}\nfiles: {files}\n{desc}\n'."'";
|
||||
}
|
||||
|
||||
public function getRepositorySize()
|
||||
@ -336,10 +339,14 @@ class IDF_Scm_Mercurial extends IDF_Scm
|
||||
if (!$this->isValidRevision($commit)) {
|
||||
return false;
|
||||
}
|
||||
$tmpl = ($getdiff) ?
|
||||
Pluf::f('hg_path', 'hg').' log -p -r %s -R %s' : Pluf::f('hg_path', 'hg').' log -r %s -R %s';
|
||||
$tmpl = ($getdiff)
|
||||
? Pluf::f('hg_path', 'hg').' log -p -r %s -R %s --template %s'
|
||||
: Pluf::f('hg_path', 'hg').' log -r %s -R %s --template %s';
|
||||
$cmd = sprintf($tmpl,
|
||||
escapeshellarg($commit), escapeshellarg($this->repo));
|
||||
escapeshellarg($commit),
|
||||
escapeshellarg($this->repo),
|
||||
$this->hg_log_template);
|
||||
|
||||
$out = array();
|
||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||
self::exec('IDF_Scm_Mercurial::getCommit', $cmd, $out);
|
||||
@ -356,7 +363,7 @@ class IDF_Scm_Mercurial extends IDF_Scm
|
||||
$log[] = $line;
|
||||
}
|
||||
}
|
||||
$out = self::parseLog($log, 6);
|
||||
$out = self::parseLog($log, 4);
|
||||
$out[0]->diff = implode("\n", $change);
|
||||
return $out[0];
|
||||
}
|
||||
@ -381,11 +388,11 @@ class IDF_Scm_Mercurial extends IDF_Scm
|
||||
*/
|
||||
public function getChangeLog($commit='tip', $n=10)
|
||||
{
|
||||
$cmd = sprintf(Pluf::f('hg_path', 'hg').' log -R %s -l%s ', escapeshellarg($this->repo), $n, $commit);
|
||||
$cmd = sprintf(Pluf::f('hg_path', 'hg').' log -R %s -l%s --template %s', escapeshellarg($this->repo), $n, $this->hg_log_template, $commit);
|
||||
$out = array();
|
||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||
self::exec('IDF_Scm_Mercurial::getChangeLog', $cmd, $out);
|
||||
return self::parseLog($out, 6);
|
||||
return self::parseLog($out, 4);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -421,7 +428,7 @@ class IDF_Scm_Mercurial extends IDF_Scm
|
||||
continue;
|
||||
}
|
||||
$match = array();
|
||||
if (preg_match('/(\S+)\s*:\s*(.*)/', $line, $match)) {
|
||||
if (preg_match('/^(\S+):\s*(.*)/', $line, $match)) {
|
||||
$match[1] = strtolower($match[1]);
|
||||
if ($match[1] == 'user') {
|
||||
$c['author'] = $match[2];
|
||||
|
Loading…
Reference in New Issue
Block a user