* Monotone.php (IDF_Scm_Monotone): basic_io values need to be unescaped; implement getChangeLog()
* Monotone.php (IDF_Scm_Monotone_Stdio): add support for multiple, equally named options * Source.php, commit.html: split-off the global commit template (which had some separate code already for SVN) and adapt the left blocks for mtn to shorten branch and tag names just like we do everywhere else
This commit is contained in:
parent
15a2bd90b3
commit
3b53ceedcd
@ -109,10 +109,16 @@ class IDF_Scm_Monotone_Stdio
|
|||||||
if (count($options) > 0)
|
if (count($options) > 0)
|
||||||
{
|
{
|
||||||
$cmd = "o";
|
$cmd = "o";
|
||||||
foreach ($options as $k => $v)
|
foreach ($options as $k => $vals)
|
||||||
{
|
{
|
||||||
$cmd .= strlen((string)$k) . ":" . (string)$k;
|
if (!is_array($vals))
|
||||||
$cmd .= strlen((string)$v) . ":" . (string)$v;
|
$vals = array($vals);
|
||||||
|
|
||||||
|
foreach ($vals as $v)
|
||||||
|
{
|
||||||
|
$cmd .= strlen((string)$k) . ":" . (string)$k;
|
||||||
|
$cmd .= strlen((string)$v) . ":" . (string)$v;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$cmd .= "e ";
|
$cmd .= "e ";
|
||||||
}
|
}
|
||||||
@ -409,6 +415,15 @@ class IDF_Scm_Monotone extends IDF_Scm
|
|||||||
++$valCount;
|
++$valCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for ($i = 0; $i <= $valCount; $i++)
|
||||||
|
{
|
||||||
|
$stanzaLine['values'][$i] = str_replace(
|
||||||
|
array("\\\\", "\\\""),
|
||||||
|
array("\\", "\""),
|
||||||
|
$stanzaLine['values'][$i]
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$stanza[] = $stanzaLine;
|
$stanza[] = $stanzaLine;
|
||||||
@ -795,7 +810,7 @@ class IDF_Scm_Monotone extends IDF_Scm
|
|||||||
|
|
||||||
return $this->stdio->exec(
|
return $this->stdio->exec(
|
||||||
array("content_diff"),
|
array("content_diff"),
|
||||||
array("r" => $sources[0], "r" => $targets[0])
|
array("r" => array($sources[0], $targets[0]))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -873,6 +888,54 @@ class IDF_Scm_Monotone extends IDF_Scm
|
|||||||
*/
|
*/
|
||||||
public function getChangeLog($commit=null, $n=10)
|
public function getChangeLog($commit=null, $n=10)
|
||||||
{
|
{
|
||||||
throw new Pluf_Exception_NotImplemented();
|
$horizont = $this->_resolveSelector($commit);
|
||||||
|
$initialBranches = array();
|
||||||
|
$logs = array();
|
||||||
|
|
||||||
|
while (!empty($horizont) && $n > 0)
|
||||||
|
{
|
||||||
|
if (count($horizont) > 1)
|
||||||
|
{
|
||||||
|
$out = $this->stdio->exec(array("toposort") + $horizont);
|
||||||
|
$horizont = preg_split("/\n/", $out, -1, PREG_SPLIT_NO_EMPTY);
|
||||||
|
}
|
||||||
|
|
||||||
|
$rev = array_shift($horizont);
|
||||||
|
$certs = $this->_getCerts($rev);
|
||||||
|
|
||||||
|
// read in the initial branches we should follow
|
||||||
|
if (count($initialBranches) == 0)
|
||||||
|
{
|
||||||
|
$initialBranches = $certs['branch'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// only add it to our log if it is on one of the initial branches
|
||||||
|
if (count(array_intersect($initialBranches, $certs['branch'])) > 0)
|
||||||
|
{
|
||||||
|
--$n;
|
||||||
|
|
||||||
|
$log = array();
|
||||||
|
$log['author'] = implode(", ", $certs['author']);
|
||||||
|
|
||||||
|
$dates = array();
|
||||||
|
foreach ($certs['date'] as $date)
|
||||||
|
$dates[] = gmdate('Y-m-d H:i:s', strtotime($date));
|
||||||
|
$log['date'] = implode(', ', $dates);
|
||||||
|
|
||||||
|
$combinedChangelog = implode("\n---\n", $certs['changelog']);
|
||||||
|
$split = preg_split("/[\n\r]/", $combinedChangelog, 2);
|
||||||
|
$log['title'] = $split[0];
|
||||||
|
$log['full_message'] = (isset($split[1])) ? trim($split[1]) : '';
|
||||||
|
|
||||||
|
$log['commit'] = $rev;
|
||||||
|
|
||||||
|
$logs[] = (object)$log;
|
||||||
|
}
|
||||||
|
|
||||||
|
$out = $this->stdio->exec(array("parents", $rev));
|
||||||
|
$horizont += preg_split("/\n/", $out, -1, PREG_SPLIT_NO_EMPTY);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $logs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -308,7 +308,7 @@ class IDF_Views_Source
|
|||||||
$in_branches = $scm->inBranches($cobject->commit, '');
|
$in_branches = $scm->inBranches($cobject->commit, '');
|
||||||
$tags = $scm->getTags();
|
$tags = $scm->getTags();
|
||||||
$in_tags = $scm->inTags($cobject->commit, '');
|
$in_tags = $scm->inTags($cobject->commit, '');
|
||||||
return Pluf_Shortcuts_RenderToResponse('idf/source/commit.html',
|
return Pluf_Shortcuts_RenderToResponse('idf/source/'.$scmConf.'/commit.html',
|
||||||
array(
|
array(
|
||||||
'page_title' => $page_title,
|
'page_title' => $page_title,
|
||||||
'title' => $title,
|
'title' => $title,
|
||||||
|
@ -37,33 +37,6 @@
|
|||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{/block}
|
{/block}
|
||||||
{block context}
|
|
||||||
{if $scm != 'svn'}
|
|
||||||
<p><strong>{trans 'Branches:'}</strong><br/>
|
|
||||||
{foreach $branches as $branch => $path}
|
|
||||||
{aurl 'url', 'IDF_Views_Source::treeBase', array($project.shortname, $branch)}
|
|
||||||
<span class="label{if in_array($branch, $tree_in)} active{/if}"><a href="{$url}" class="label">{$branch}</a></span><br/>
|
|
||||||
{/foreach}
|
|
||||||
</p>
|
|
||||||
{if $tags}
|
|
||||||
<p><strong>{trans 'Tags:'}</strong><br/>
|
|
||||||
{foreach $tags as $tag => $path}
|
|
||||||
{aurl 'url', 'IDF_Views_Source::treeBase', array($project.shortname, $tag)}
|
|
||||||
<span class="label{if in_array($tag, $tags_in)} active{/if}"><a href="{$url}" class="label">{if $path}{$path}{else}{$tag}{/if}</a></span><br/>
|
|
||||||
{/foreach}
|
|
||||||
</p>
|
|
||||||
{/if}
|
|
||||||
{else}
|
|
||||||
<form class="star" action="{url 'IDF_Views_Source_Svn::changelogRev', array($project.shortname)}" method="get">
|
|
||||||
<p><strong>{trans 'Revision:'}</strong> {$commit}</p>
|
|
||||||
<p>
|
|
||||||
<input accesskey="4" type="text" value="{$commit}" name="rev" size="5"/>
|
|
||||||
<input type="submit" name="s" value="{trans 'Go to revision'}"/>
|
|
||||||
</p>
|
|
||||||
</form>
|
|
||||||
{/if}
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block javascript}
|
{block javascript}
|
||||||
<script type="text/javascript" src="{media '/idf/js/prettify.js'}"></script>
|
<script type="text/javascript" src="{media '/idf/js/prettify.js'}"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
18
src/IDF/templates/idf/source/git/commit.html
Normal file
18
src/IDF/templates/idf/source/git/commit.html
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{extends "idf/source/commit.html"}
|
||||||
|
{block context}
|
||||||
|
<p><strong>{trans 'Branches:'}</strong><br/>
|
||||||
|
{foreach $branches as $branch => $path}
|
||||||
|
{aurl 'url', 'IDF_Views_Source::treeBase', array($project.shortname, $branch)}
|
||||||
|
<span class="label{if in_array($branch, $tree_in)} active{/if}"><a href="{$url}" class="label">{$branch}</a></span><br/>
|
||||||
|
{/foreach}
|
||||||
|
</p>
|
||||||
|
{if $tags}
|
||||||
|
<p><strong>{trans 'Tags:'}</strong><br/>
|
||||||
|
{foreach $tags as $tag => $path}
|
||||||
|
{aurl 'url', 'IDF_Views_Source::treeBase', array($project.shortname, $tag)}
|
||||||
|
<span class="label{if in_array($tag, $tags_in)} active{/if}"><a href="{$url}" class="label">{if $path}{$path}{else}{$tag}{/if}</a></span><br/>
|
||||||
|
{/foreach}
|
||||||
|
</p>
|
||||||
|
{/if}
|
||||||
|
{/block}
|
||||||
|
|
18
src/IDF/templates/idf/source/mercurial/commit.html
Normal file
18
src/IDF/templates/idf/source/mercurial/commit.html
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{extends "idf/source/commit.html"}
|
||||||
|
{block context}
|
||||||
|
<p><strong>{trans 'Branches:'}</strong><br/>
|
||||||
|
{foreach $branches as $branch => $path}
|
||||||
|
{aurl 'url', 'IDF_Views_Source::treeBase', array($project.shortname, $branch)}
|
||||||
|
<span class="label{if in_array($branch, $tree_in)} active{/if}"><a href="{$url}" class="label">{$branch}</a></span><br/>
|
||||||
|
{/foreach}
|
||||||
|
</p>
|
||||||
|
{if $tags}
|
||||||
|
<p><strong>{trans 'Tags:'}</strong><br/>
|
||||||
|
{foreach $tags as $tag => $path}
|
||||||
|
{aurl 'url', 'IDF_Views_Source::treeBase', array($project.shortname, $tag)}
|
||||||
|
<span class="label{if in_array($tag, $tags_in)} active{/if}"><a href="{$url}" class="label">{if $path}{$path}{else}{$tag}{/if}</a></span><br/>
|
||||||
|
{/foreach}
|
||||||
|
</p>
|
||||||
|
{/if}
|
||||||
|
{/block}
|
||||||
|
|
26
src/IDF/templates/idf/source/mtn/commit.html
Normal file
26
src/IDF/templates/idf/source/mtn/commit.html
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{extends "idf/source/commit.html"}
|
||||||
|
{block context}
|
||||||
|
<p><strong>{trans 'Branches:'}</strong><br/>
|
||||||
|
{foreach $branches as $selector => $branch}
|
||||||
|
{aurl 'url', 'IDF_Views_Source::treeBase', array($project.shortname, $selector)}
|
||||||
|
<span class="label{if in_array($branch, $tree_in)} active{/if}">
|
||||||
|
<a href="{$url}" class="label" title="{$branch}">
|
||||||
|
{$branch|shorten:25}
|
||||||
|
</a>
|
||||||
|
</span><br/>
|
||||||
|
{/foreach}
|
||||||
|
</p>
|
||||||
|
{if $tags}
|
||||||
|
<p><strong>{trans 'Tags:'}</strong><br/>
|
||||||
|
{foreach $tags as $selector => $tag}
|
||||||
|
{aurl 'url', 'IDF_Views_Source::treeBase', array($project.shortname, $selector)}
|
||||||
|
<span class="label{if in_array($tag, $tags_in)} active{/if}">
|
||||||
|
<a href="{$url}" class="label" title="{$tag}">
|
||||||
|
{$tag|shorten:25}
|
||||||
|
</a>
|
||||||
|
</span><br/>
|
||||||
|
{/foreach}
|
||||||
|
</p>
|
||||||
|
{/if}
|
||||||
|
{/block}
|
||||||
|
|
11
src/IDF/templates/idf/source/svn/commit.html
Normal file
11
src/IDF/templates/idf/source/svn/commit.html
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{extends "idf/source/commit.html"}
|
||||||
|
{block context}
|
||||||
|
<form class="star" action="{url 'IDF_Views_Source_Svn::changelogRev', array($project.shortname)}" method="get">
|
||||||
|
<p><strong>{trans 'Revision:'}</strong> {$commit}</p>
|
||||||
|
<p>
|
||||||
|
<input accesskey="4" type="text" value="{$commit}" name="rev" size="5"/>
|
||||||
|
<input type="submit" name="s" value="{trans 'Go to revision'}"/>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
{/block}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user