Merge branch 'release-1.1' of projects.ceondo.com:indefero into release-1.1
This commit is contained in:
commit
e0c6dcd5a4
2
AUTHORS
2
AUTHORS
@ -7,12 +7,14 @@ Much appreciated contributors (in alphabetical order):
|
|||||||
Ludovic Bellière
|
Ludovic Bellière
|
||||||
bohwaz <http://bohwaz.net/>
|
bohwaz <http://bohwaz.net/>
|
||||||
Adrien Bustany
|
Adrien Bustany
|
||||||
|
Dmitry Dulepov
|
||||||
Baptiste Durand-Bret
|
Baptiste Durand-Bret
|
||||||
Manuel Eidenberger <eidenberger@gmail.com>
|
Manuel Eidenberger <eidenberger@gmail.com>
|
||||||
Raphaël Emourgeon
|
Raphaël Emourgeon
|
||||||
David Feeney
|
David Feeney
|
||||||
Patrick Georgi <patrick.georgi@coresystems.de>
|
Patrick Georgi <patrick.georgi@coresystems.de>
|
||||||
Ciaran Gultnieks
|
Ciaran Gultnieks
|
||||||
|
Matías Halles <matias@halles.cl>
|
||||||
Julien Issler
|
Julien Issler
|
||||||
Jerry <lxb429@gmail.com> - Chinese translation
|
Jerry <lxb429@gmail.com> - Chinese translation
|
||||||
Benjamin Jorand <benjamin.jorand@gmail.com> - Mercurial support
|
Benjamin Jorand <benjamin.jorand@gmail.com> - Mercurial support
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
- Forge-wide and per-project watch lists of starred issues (issue 589)
|
- Forge-wide and per-project watch lists of starred issues (issue 589)
|
||||||
- Configure a default issue template for each project (issues 212 and 540)
|
- Configure a default issue template for each project (issues 212 and 540)
|
||||||
- Pick default issue labels from the configured project settings (issue 556)
|
- Pick default issue labels from the configured project settings (issue 556)
|
||||||
|
- Navigate to a preceding / following issue in the issue detail view
|
||||||
- Many new text syntaxes to auto-link revisions (see [[AutomaticLinks]], issue 569)
|
- Many new text syntaxes to auto-link revisions (see [[AutomaticLinks]], issue 569)
|
||||||
|
|
||||||
* _Documentation wiki_:
|
* _Documentation wiki_:
|
||||||
@ -31,9 +32,11 @@
|
|||||||
- Fix `Need SSH_ORIGINAL_COMMAND in environment` error for git sync (issue 198)
|
- Fix `Need SSH_ORIGINAL_COMMAND in environment` error for git sync (issue 198)
|
||||||
- Added an option to disable lengthy project size calculation in the forge (issue 403)
|
- Added an option to disable lengthy project size calculation in the forge (issue 403)
|
||||||
- Fix a problem when deleting an orphaned git repository (issue 467)
|
- Fix a problem when deleting an orphaned git repository (issue 467)
|
||||||
|
- Ignore XML parsing problems when trying to retrieve commit messages for svn (issues 469 and 518)
|
||||||
- Sort the project list by the display name of the project (issue 477)
|
- 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)
|
- 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)
|
- 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)
|
- 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)
|
- Improve HTML validation by switching from `strict` to `transitional` DOCTYPE (issue 511)
|
||||||
- Properly handle git commits without a changelog title (issue 520)
|
- Properly handle git commits without a changelog title (issue 520)
|
||||||
@ -52,8 +55,8 @@
|
|||||||
- Disable browser autocomplete of password fields in the account settings (issue 616)
|
- Disable browser autocomplete of password fields in the account settings (issue 616)
|
||||||
- Improvements in the automatic linker parser (issue 618)
|
- Improvements in the automatic linker parser (issue 618)
|
||||||
- The `createIssue` API method did not check the API authentication (issue 619)
|
- The `createIssue` API method did not check the API authentication (issue 619)
|
||||||
- Reduce the memory footprint and compatibility of the internal diff parser (issue 627)
|
- Reduce the memory footprint and compatibility of the internal diff parser (issues 627 and 633)
|
||||||
- Print active git branch heads and tags in bold
|
- Print the git branches and tags in bold which contain the currently displayed revision
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
|
@ -35,7 +35,9 @@ class IDF_Diff
|
|||||||
public function __construct($diff, $path_strip_level = 0)
|
public function __construct($diff, $path_strip_level = 0)
|
||||||
{
|
{
|
||||||
$this->path_strip_level = $path_strip_level;
|
$this->path_strip_level = $path_strip_level;
|
||||||
$this->lines = preg_split("/\015\012|\015|\012/", $diff);
|
// this works because in unified diff format even empty lines are
|
||||||
|
// either prefixed with a '+', '-' or ' '
|
||||||
|
$this->lines = preg_split("/\015\012|\015|\012/", $diff, -1, PREG_SPLIT_NO_EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function parse()
|
public function parse()
|
||||||
@ -92,13 +94,13 @@ class IDF_Diff
|
|||||||
$dellines = $results[2] === '' ? 1 : $results[2];
|
$dellines = $results[2] === '' ? 1 : $results[2];
|
||||||
$addstart = $results[3];
|
$addstart = $results[3];
|
||||||
$addlines = $results[4] === '' ? 1 : $results[4];
|
$addlines = $results[4] === '' ? 1 : $results[4];
|
||||||
$chunks_def = array(array($delstart), array($addstart));
|
|
||||||
if ($results[2] != '') $chunks_def[0][] = $dellines;
|
$files[$current_file]['chunks_def'][] = array(
|
||||||
if ($results[4] != '') $chunks_def[1][] = $addlines;
|
array($delstart, $dellines), array($addstart, $addlines)
|
||||||
$files[$current_file]['chunks_def'][] = $chunks_def;
|
);
|
||||||
$files[$current_file]['chunks'][] = array();
|
$files[$current_file]['chunks'][] = array();
|
||||||
|
|
||||||
while ($addlines >= 0 || $dellines >= 0) {
|
while ($i < $diffsize && ($addlines >= 0 || $dellines >= 0)) {
|
||||||
$linetype = $this->lines[$i] != '' ? $this->lines[$i][0] : ' ';
|
$linetype = $this->lines[$i] != '' ? $this->lines[$i][0] : ' ';
|
||||||
switch ($linetype) {
|
switch ($linetype) {
|
||||||
case ' ':
|
case ' ':
|
||||||
@ -121,6 +123,10 @@ class IDF_Diff
|
|||||||
$dellines--;
|
$dellines--;
|
||||||
$delstart++;
|
$delstart++;
|
||||||
break;
|
break;
|
||||||
|
case '\\':
|
||||||
|
// ignore newline handling for now, see issue 636
|
||||||
|
$i++;
|
||||||
|
continue;
|
||||||
default:
|
default:
|
||||||
break 2;
|
break 2;
|
||||||
}
|
}
|
||||||
|
@ -248,10 +248,14 @@ class IDF_Scm_Git extends IDF_Scm
|
|||||||
Pluf::f('git_path', 'git'),
|
Pluf::f('git_path', 'git'),
|
||||||
escapeshellarg($commit));
|
escapeshellarg($commit));
|
||||||
self::exec('IDF_Scm_Git::inTags', $cmd, $out, $return);
|
self::exec('IDF_Scm_Git::inTags', $cmd, $out, $return);
|
||||||
if (0 != $return) {
|
// `git tag` gained the `--contains` option in 1.6.2, earlier
|
||||||
$this->cache['tags'] = array();
|
// versions report a bad usage error (129) which we ignore here
|
||||||
|
if (129 == $return) {
|
||||||
|
$this->cache['inTags'][$commit] = array();
|
||||||
return array();
|
return array();
|
||||||
// Ugly emergency fix, needs to be cleaned.
|
}
|
||||||
|
// any other error should of course get noted
|
||||||
|
if (0 != $return) {
|
||||||
throw new IDF_Scm_Exception(sprintf($this->error_tpl,
|
throw new IDF_Scm_Exception(sprintf($this->error_tpl,
|
||||||
$cmd, $return,
|
$cmd, $return,
|
||||||
implode("\n", $out)));
|
implode("\n", $out)));
|
||||||
@ -654,7 +658,7 @@ class IDF_Scm_Git extends IDF_Scm
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see IDF_Scm::getDiffPathStripLevel()
|
* @see IDF_Scm::getDiffPathStripLevel()
|
||||||
*/
|
*/
|
||||||
public function getDiffPathStripLevel()
|
public function getDiffPathStripLevel()
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -27,10 +27,13 @@
|
|||||||
*/
|
*/
|
||||||
class IDF_Scm_Mercurial extends IDF_Scm
|
class IDF_Scm_Mercurial extends IDF_Scm
|
||||||
{
|
{
|
||||||
|
protected $hg_log_template;
|
||||||
|
|
||||||
public function __construct($repo, $project=null)
|
public function __construct($repo, $project=null)
|
||||||
{
|
{
|
||||||
$this->repo = $repo;
|
$this->repo = $repo;
|
||||||
$this->project = $project;
|
$this->project = $project;
|
||||||
|
$this->hg_log_template = "'".'changeset: {rev}:{node|short}\nauthor: {author}\ndate: {date|isodate}\nfiles: {files}\n{desc}\n'."'";
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getRepositorySize()
|
public function getRepositorySize()
|
||||||
@ -336,10 +339,14 @@ class IDF_Scm_Mercurial extends IDF_Scm
|
|||||||
if (!$this->isValidRevision($commit)) {
|
if (!$this->isValidRevision($commit)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$tmpl = ($getdiff) ?
|
$tmpl = ($getdiff)
|
||||||
Pluf::f('hg_path', 'hg').' log -p -r %s -R %s' : Pluf::f('hg_path', 'hg').' log -r %s -R %s';
|
? 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,
|
$cmd = sprintf($tmpl,
|
||||||
escapeshellarg($commit), escapeshellarg($this->repo));
|
escapeshellarg($commit),
|
||||||
|
escapeshellarg($this->repo),
|
||||||
|
$this->hg_log_template);
|
||||||
|
|
||||||
$out = array();
|
$out = array();
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
self::exec('IDF_Scm_Mercurial::getCommit', $cmd, $out);
|
self::exec('IDF_Scm_Mercurial::getCommit', $cmd, $out);
|
||||||
@ -356,7 +363,7 @@ class IDF_Scm_Mercurial extends IDF_Scm
|
|||||||
$log[] = $line;
|
$log[] = $line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$out = self::parseLog($log, 6);
|
$out = self::parseLog($log, 4);
|
||||||
$out[0]->diff = implode("\n", $change);
|
$out[0]->diff = implode("\n", $change);
|
||||||
return $out[0];
|
return $out[0];
|
||||||
}
|
}
|
||||||
@ -381,11 +388,11 @@ class IDF_Scm_Mercurial extends IDF_Scm
|
|||||||
*/
|
*/
|
||||||
public function getChangeLog($commit='tip', $n=10)
|
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();
|
$out = array();
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
self::exec('IDF_Scm_Mercurial::getChangeLog', $cmd, $out);
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
$match = array();
|
$match = array();
|
||||||
if (preg_match('/(\S+)\s*:\s*(.*)/', $line, $match)) {
|
if (preg_match('/^(\S+):\s*(.*)/', $line, $match)) {
|
||||||
$match[1] = strtolower($match[1]);
|
$match[1] = strtolower($match[1]);
|
||||||
if ($match[1] == 'user') {
|
if ($match[1] == 'user') {
|
||||||
$c['author'] = $match[2];
|
$c['author'] = $match[2];
|
||||||
|
@ -266,8 +266,13 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
escapeshellarg($this->repo),
|
escapeshellarg($this->repo),
|
||||||
escapeshellarg($rev));
|
escapeshellarg($rev));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
$xml = simplexml_load_string(self::shell_exec('IDF_Scm_Svn::getCommitMessage', $cmd));
|
try {
|
||||||
$this->cache['commitmess'][$rev] = (string) $xml->logentry->msg;
|
$xml = simplexml_load_string(self::shell_exec('IDF_Scm_Svn::getCommitMessage', $cmd));
|
||||||
|
$this->cache['commitmess'][$rev] = (string) $xml->logentry->msg;
|
||||||
|
}
|
||||||
|
catch (Exception $e) {
|
||||||
|
$this->cache['commitmess'][$rev] = '';
|
||||||
|
}
|
||||||
return $this->cache['commitmess'][$rev];
|
return $this->cache['commitmess'][$rev];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{extends "idf/issues/base.html"}
|
{extends "idf/issues/base.html"}
|
||||||
{block titleicon}{if $form}<form class="star" method="post" action="{url 'IDF_Views_Issue::star', array($project.shortname, $issue.id)}"><input type="image" src="{if $starred}{media '/idf/img/star.png'}{else}{media '/idf/img/star-grey.png'}{/if}" name="submit" title="{if $starred}{trans 'Remove this issue from your watch list'}{else}{trans 'Add this issue to your watch list'}{/if}" /></form> {/if}{/block}
|
{block titleicon}{if $form}<form class="star" method="post" action="{url 'IDF_Views_Issue::star', array($project.shortname, $issue.id)}"><input type="image" src="{if $starred}{media '/idf/img/star.png'}{else}{media '/idf/img/star-grey.png'}{/if}" name="submit" title="{if $starred}{trans 'Remove this issue from your watch list'}{else}{trans 'Add this issue to your watch list'}{/if}" /></form> {/if}{/block}
|
||||||
{block body}
|
{block body}
|
||||||
<div style="float:right;">
|
<div class="issue-prev-next">
|
||||||
{if $previous_issue_id}
|
{if $previous_issue_id}
|
||||||
<a href="{url 'IDF_Views_Issue::view', array($project.shortname, $previous_issue_id)}" title="{if $closed}{trans 'Click here to view the previous closed issue'}{else}{trans 'Click here to view the previous open issue'}{/if}">Previous issue</a>
|
<a href="{url 'IDF_Views_Issue::view', array($project.shortname, $previous_issue_id)}" title="{if $closed}{trans 'Click here to view the previous closed issue'}{else}{trans 'Click here to view the previous open issue'}{/if}">Previous issue</a>
|
||||||
{/if}
|
{/if}
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:2:{i:0;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:3:"abc";}i:1;a:3:{i:0;s:1:"0";i:1;i:2;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"0";i:1;s:1:"0";}i:1;a:1:{i:0;s:1:"1";}}}}}
|
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:1:{i:0;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:3:"abc";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"0";i:1;s:1:"0";}i:1;a:2:{i:0;s:1:"1";i:1;i:1;}}}}}
|
@ -1 +1 @@
|
|||||||
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:3:{i:0;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:3:"abc";}i:1;a:3:{i:0;s:0:"";i:1;i:2;i:2;s:3:"abc";}i:2;a:3:{i:0;s:1:"0";i:1;i:3;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"0";i:1;s:1:"0";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"2";}}}}}
|
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:2:{i:0;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:3:"abc";}i:1;a:3:{i:0;s:0:"";i:1;i:2;i:2;s:3:"abc";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"0";i:1;s:1:"0";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"2";}}}}}
|
@ -1 +1 @@
|
|||||||
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:3:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:3:"abc";}i:1;a:3:{i:0;i:2;i:1;s:0:"";i:2;s:3:"abc";}i:2;a:3:{i:0;i:3;i:1;i:2;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"2";}i:1;a:1:{i:0;s:1:"1";}}}}}
|
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:2:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:3:"abc";}i:1;a:3:{i:0;i:2;i:1;s:0:"";i:2;s:3:"abc";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"2";}i:1;a:2:{i:0;s:1:"1";i:1;i:1;}}}}}
|
@ -1 +1 @@
|
|||||||
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:3:{i:0;a:3:{i:0;s:1:"1";i:1;s:0:"";i:2;s:3:"abc";}i:1;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:2:"ls";}i:2;a:3:{i:0;i:2;i:1;i:2;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:1:{i:0;s:1:"1";}i:1;a:1:{i:0;s:1:"1";}}}}}
|
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:2:{i:0;a:3:{i:0;s:1:"1";i:1;s:0:"";i:2;s:3:"abc";}i:1;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:2:"ls";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;i:1;}i:1;a:2:{i:0;s:1:"1";i:1;i:1;}}}}}
|
@ -1 +1 @@
|
|||||||
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:3:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:2:"ls";}i:1;a:3:{i:0;s:0:"";i:1;i:2;i:2;s:2:"ls";}i:2;a:3:{i:0;i:2;i:1;i:3;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:1:{i:0;s:1:"1";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"2";}}}}}
|
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:2:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:2:"ls";}i:1;a:3:{i:0;s:0:"";i:1;i:2;i:2;s:2:"ls";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;i:1;}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"2";}}}}}
|
@ -1 +1 @@
|
|||||||
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:4:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:2:"ls";}i:1;a:3:{i:0;i:2;i:1;i:2;i:2;s:2:"ls";}i:2;a:3:{i:0;s:0:"";i:1;i:3;i:2;s:1:"l";}i:3;a:3:{i:0;i:3;i:1;i:4;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"2";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"3";}}}}}
|
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:3:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:2:"ls";}i:1;a:3:{i:0;i:2;i:1;i:2;i:2;s:2:"ls";}i:2;a:3:{i:0;s:0:"";i:1;i:3;i:2;s:1:"l";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"2";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"3";}}}}}
|
@ -1 +1 @@
|
|||||||
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:2:{i:0;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:3:"foo";}i:1;a:3:{i:0;s:1:"0";i:1;i:2;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"0";i:1;s:1:"0";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"1";}}}}}
|
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:1:{i:0;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:3:"foo";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"0";i:1;s:1:"0";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"1";}}}}}
|
@ -1 +1 @@
|
|||||||
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:3:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:3:"foo";}i:1;a:3:{i:0;s:0:"";i:1;i:2;i:2;s:2:"bf";}i:2;a:3:{i:0;i:2;i:1;i:3;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"1";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"2";}}}}}
|
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:2:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:3:"foo";}i:1;a:3:{i:0;s:0:"";i:1;i:2;i:2;s:2:"bf";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"1";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"2";}}}}}
|
@ -1 +1 @@
|
|||||||
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:2:{i:0;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:3:"abc";}i:1;a:3:{i:0;s:1:"0";i:1;i:2;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"0";i:1;s:1:"0";}i:1;a:1:{i:0;s:1:"1";}}}}}
|
a:1:{s:1:"a";a:2:{s:6:"chunks";a:1:{i:0;a:1:{i:0;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:3:"abc";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"0";i:1;s:1:"0";}i:1;a:2:{i:0;s:1:"1";i:1;i:1;}}}}}
|
@ -1 +1 @@
|
|||||||
a:1:{s:1:"b";a:2:{s:6:"chunks";a:1:{i:0;a:4:{i:0;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:1:"a";}i:1;a:3:{i:0;s:0:"";i:1;i:2;i:2;s:1:"b";}i:2;a:3:{i:0;s:0:"";i:1;i:3;i:2;b:0;}i:3;a:3:{i:0;s:1:"0";i:1;i:4;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"0";i:1;s:1:"0";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"3";}}}}}
|
a:1:{s:1:"b";a:2:{s:6:"chunks";a:1:{i:0;a:3:{i:0;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:1:"a";}i:1;a:3:{i:0;s:0:"";i:1;i:2;i:2;s:1:"b";}i:2;a:3:{i:0;s:0:"";i:1;i:3;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"0";i:1;s:1:"0";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"3";}}}}}
|
@ -1 +1 @@
|
|||||||
a:1:{s:1:"b";a:2:{s:6:"chunks";a:1:{i:0;a:5:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:1:"a";}i:1;a:3:{i:0;s:0:"";i:1;i:2;i:2;s:1:"l";}i:2;a:3:{i:0;i:2;i:1;i:3;i:2;s:1:"b";}i:3;a:3:{i:0;i:3;i:1;i:4;i:2;b:0;}i:4;a:3:{i:0;i:4;i:1;i:5;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"3";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"4";}}}}}
|
a:1:{s:1:"b";a:2:{s:6:"chunks";a:1:{i:0;a:4:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:1:"a";}i:1;a:3:{i:0;s:0:"";i:1;i:2;i:2;s:1:"l";}i:2;a:3:{i:0;i:2;i:1;i:3;i:2;s:1:"b";}i:3;a:3:{i:0;i:3;i:1;i:4;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"3";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"4";}}}}}
|
@ -1 +1 @@
|
|||||||
a:1:{s:1:"b";a:2:{s:6:"chunks";a:1:{i:0;a:4:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:1:"a";}i:1;a:3:{i:0;i:2;i:1;s:0:"";i:2;s:1:"b";}i:2;a:3:{i:0;i:3;i:1;s:0:"";i:2;b:0;}i:3;a:3:{i:0;i:4;i:1;i:2;i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"3";}i:1;a:1:{i:0;s:1:"1";}}}}}
|
a:1:{s:1:"b";a:2:{s:6:"chunks";a:1:{i:0;a:3:{i:0;a:3:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:1:"a";}i:1;a:3:{i:0;i:2;i:1;s:0:"";i:2;s:1:"b";}i:2;a:3:{i:0;i:3;i:1;s:0:"";i:2;b:0;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"3";}i:1;a:2:{i:0;s:1:"1";i:1;i:1;}}}}}
|
@ -0,0 +1 @@
|
|||||||
|
a:1:{s:9:"test_file";a:2:{s:6:"chunks";a:1:{i:0;a:2:{i:0;a:3:{i:0;s:1:"1";i:1;s:0:"";i:2;s:17:"Steddy is awesome";}i:1;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:22:"Steddy is very awesome";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;i:1;}i:1;a:2:{i:0;s:1:"1";i:1;i:1;}}}}}
|
@ -1 +0,0 @@
|
|||||||
a:1:{s:9:"test_file";a:2:{s:6:"chunks";a:1:{i:0;a:3:{i:0;a:3:{i:0;i:1;i:1;N;i:2;s:17:"Steddy is awesome";}i:1;a:3:{i:0;N;i:1;i:1;i:2;s:22:"Steddy is very awesome";}i:2;a:3:{i:0;i:2;i:1;i:2;i:2;N;}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:1:{i:0;i:1;}i:1;a:1:{i:0;i:1;}}}}}
|
|
8
test/data/IDF_DiffTest/test-16-git-newline-removed.diff
Normal file
8
test/data/IDF_DiffTest/test-16-git-newline-removed.diff
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
diff --git a/foo b/foo
|
||||||
|
index a86c18f..71ccdd0 100644
|
||||||
|
--- a/foo
|
||||||
|
+++ b/foo
|
||||||
|
@@ -1 +1 @@
|
||||||
|
-This is foo
|
||||||
|
+This is foo
|
||||||
|
\ No newline at end of file
|
@ -0,0 +1 @@
|
|||||||
|
a:1:{s:3:"foo";a:2:{s:6:"chunks";a:1:{i:0;a:2:{i:0;a:3:{i:0;s:1:"1";i:1;s:0:"";i:2;s:11:"This is foo";}i:1;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:11:"This is foo";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;i:1;}i:1;a:2:{i:0;s:1:"1";i:1;i:1;}}}}}
|
8
test/data/IDF_DiffTest/test-17-git-newline-added.diff
Normal file
8
test/data/IDF_DiffTest/test-17-git-newline-added.diff
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
diff --git a/foo b/foo
|
||||||
|
index 71ccdd0..a86c18f 100644
|
||||||
|
--- a/foo
|
||||||
|
+++ b/foo
|
||||||
|
@@ -1 +1 @@
|
||||||
|
-This is foo
|
||||||
|
\ No newline at end of file
|
||||||
|
+This is foo
|
@ -0,0 +1 @@
|
|||||||
|
a:1:{s:3:"foo";a:2:{s:6:"chunks";a:1:{i:0;a:2:{i:0;a:3:{i:0;s:1:"1";i:1;s:0:"";i:2;s:11:"This is foo";}i:1;a:3:{i:0;s:0:"";i:1;s:1:"1";i:2;s:11:"This is foo";}}}s:10:"chunks_def";a:1:{i:0;a:2:{i:0;a:2:{i:0;s:1:"1";i:1;i:1;}i:1;a:2:{i:0;s:1:"1";i:1;i:1;}}}}}
|
@ -216,7 +216,7 @@ span.px-header-title a, span.px-header-title a:link, span.px-header-title a:visi
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.issue-c {
|
a.issue-c {
|
||||||
text-decoration: line-through;
|
text-decoration: line-through;
|
||||||
}
|
}
|
||||||
@ -273,6 +273,11 @@ div.issue-changes-timeline {
|
|||||||
color: #888a85;
|
color: #888a85;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.issue-prev-next {
|
||||||
|
float: right;
|
||||||
|
margin-top: -25px;
|
||||||
|
}
|
||||||
|
|
||||||
div.issue-submit-info {
|
div.issue-submit-info {
|
||||||
background-color: #d3d7cf;
|
background-color: #d3d7cf;
|
||||||
-moz-border-radius: 3px;
|
-moz-border-radius: 3px;
|
||||||
@ -577,10 +582,6 @@ td.diff-a {
|
|||||||
background-color: #dfd;
|
background-color: #dfd;
|
||||||
}
|
}
|
||||||
|
|
||||||
td.diff-a > span {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
td.diff-r {
|
td.diff-r {
|
||||||
background-color: #fdd;
|
background-color: #fdd;
|
||||||
}
|
}
|
||||||
@ -588,6 +589,13 @@ td.diff-r {
|
|||||||
td.diff-a, td.diff-r, td.diff-c {
|
td.diff-a, td.diff-r, td.diff-c {
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
border-top: none;
|
border-top: none;
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.diff-a > span,
|
||||||
|
td.diff-r > span,
|
||||||
|
td.diff-c > span {
|
||||||
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.diff tr.diff-next {
|
table.diff tr.diff-next {
|
||||||
|
Loading…
Reference in New Issue
Block a user