diff --git a/composer.json b/composer.json
index a98a74f4a..9f0db4106 100644
--- a/composer.json
+++ b/composer.json
@@ -31,7 +31,8 @@
"elkuku/console-progressbar": "1.0",
"babdev/library": "dev-master",
"codeguy/upload": "1.3.2",
- "league/flysystem": "0.4.*@stable"
+ "league/flysystem": "0.4.*@stable",
+ "adaptive/php-text-difference": "1.*@stable"
},
"require-dev": {
"monolog/monolog": "1.*@stable",
diff --git a/src/App/Tracker/DiffRenderer/Html/Inline.php b/src/App/Tracker/DiffRenderer/Html/Inline.php
new file mode 100644
index 000000000..a699f1dcd
--- /dev/null
+++ b/src/App/Tracker/DiffRenderer/Html/Inline.php
@@ -0,0 +1,236 @@
+
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * - Neither the name of the Chris Boulton nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @copyright (c) 2009 Chris Boulton
+ * @license New BSD License http://www.opensource.org/licenses/bsd-license.php
+ * @link http://github.com/chrisboulton/php-diff
+ */
+
+namespace App\Tracker\DiffRenderer\Html;
+
+use Adaptive\Diff\Renderer\Html\ArrayRenderer;
+
+/**
+ * Class Inline
+ *
+ * @since 1.0
+ */
+class Inline extends ArrayRenderer
+{
+ private $showLineNumbers = true;
+
+ private $showHeader = true;
+
+ /**
+ * Render a and return diff with changes between the two sequences displayed inline (under each other).
+ *
+ * @return string The generated inline diff.
+ *
+ * @since 1.0
+ */
+ public function render()
+ {
+ $changes = parent::render();
+ $html = '';
+
+ if (empty($changes))
+ {
+ return $html;
+ }
+
+ $html .= '
';
+ $html .= '';
+ }
+
+ foreach ($changes as $i => $blocks)
+ {
+ // If this is a separate block, we're condensing code so output ...,
+ // indicating a significant portion of the code has been collapsed as it is the same
+ if ($i > 0)
+ {
+ $html .= '';
+ $html .= '
';
+ }
+ }
+ // Show deleted lines only on the left side
+ elseif ($change['tag'] == 'delete')
+ {
+ foreach ($change['base']['lines'] as $no => $line)
+ {
+ $html .= '