From 507d8b03851f6aa429766a6e0dd3b2926dc8e5e7 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Mon, 12 Jan 2009 16:47:58 +0000 Subject: update diff engine to Text_Diff 1.1.0 git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9251 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/diff/diff.php | 44 +++++++++++++++++++++++++++++++++++++++- phpBB/includes/diff/engine.php | 2 +- phpBB/includes/diff/renderer.php | 2 +- 3 files changed, 45 insertions(+), 3 deletions(-) (limited to 'phpBB/includes/diff') diff --git a/phpBB/includes/diff/diff.php b/phpBB/includes/diff/diff.php index ef018b2d9a..bc99ebdd85 100644 --- a/phpBB/includes/diff/diff.php +++ b/phpBB/includes/diff/diff.php @@ -17,7 +17,7 @@ if (!defined('IN_PHPBB')) } /** -* Code from pear.php.net, Text_Diff-1.0.0 package +* Code from pear.php.net, Text_Diff-1.1.0 package * http://pear.php.net/package/Text_Diff/ * * Modified by phpBB Group to meet our coding standards @@ -60,6 +60,48 @@ class diff return $this->_edits; } + /** + * returns the number of new (added) lines in a given diff. + * + * @since Text_Diff 1.1.0 + * + * @return integer The number of new lines + */ + function count_added_lines() + { + $count = 0; + + foreach ($this->_edits as $edit) + { + if (is_a($edit, 'diff_op_add') || is_a($edit, 'diff_op_change')) + { + $count += $edit->nfinal(); + } + } + return $count; + } + + /** + * Returns the number of deleted (removed) lines in a given diff. + * + * @since Text_Diff 1.1.0 + * + * @return integer The number of deleted lines + */ + function count_deleted_lines() + { + $count = 0; + + foreach ($this->_edits as $edit) + { + if (is_a($edit, 'diff_op_delete') || is_a($edit, 'diff_op_change')) + { + $count += $edit->norig(); + } + } + return $count; + } + /** * Computes a reversed diff. * diff --git a/phpBB/includes/diff/engine.php b/phpBB/includes/diff/engine.php index d82afb048a..eb0dcce395 100644 --- a/phpBB/includes/diff/engine.php +++ b/phpBB/includes/diff/engine.php @@ -17,7 +17,7 @@ if (!defined('IN_PHPBB')) } /** -* Code from pear.php.net, Text_Diff-1.0.0 package +* Code from pear.php.net, Text_Diff-1.1.0 package * http://pear.php.net/package/Text_Diff/ (native engine) * * Modified by phpBB Group to meet our coding standards diff --git a/phpBB/includes/diff/renderer.php b/phpBB/includes/diff/renderer.php index 2e0ec86e75..02fb6ccc37 100644 --- a/phpBB/includes/diff/renderer.php +++ b/phpBB/includes/diff/renderer.php @@ -17,7 +17,7 @@ if (!defined('IN_PHPBB')) } /** -* Code from pear.php.net, Text_Diff-1.0.0 package +* Code from pear.php.net, Text_Diff-1.1.0 package * http://pear.php.net/package/Text_Diff/ * * Modified by phpBB Group to meet our coding standards -- cgit v1.2.1 From 189e7cdf45feb3f146ce059e5c2bcc6ccd0a7391 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Mon, 12 Jan 2009 16:58:47 +0000 Subject: - Allow download of conflicting file for later reference in automatic updater - Default difference view is now 'inline' instead of 'side by side' - Added new option for merging differences to conflicting files in automatic updater git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9252 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/diff/diff.php | 57 ++++++++++++++++++++-------------------- phpBB/includes/diff/renderer.php | 2 +- 2 files changed, 30 insertions(+), 29 deletions(-) (limited to 'phpBB/includes/diff') diff --git a/phpBB/includes/diff/diff.php b/phpBB/includes/diff/diff.php index bc99ebdd85..70a4166b9c 100644 --- a/phpBB/includes/diff/diff.php +++ b/phpBB/includes/diff/diff.php @@ -107,7 +107,7 @@ class diff * * Example: * - * $diff = new diff($lines1, $lines2); + * $diff = &new diff($lines1, $lines2); * $rev = $diff->reverse(); * * @@ -469,33 +469,37 @@ class diff3 extends diff } /** - * Return merged output + * Return number of conflicts + */ + function get_num_conflicts() + { + $conflicts = 0; + + foreach ($this->_edits as $edit) + { + if ($edit->is_conflict()) + { + $conflicts++; + } + } + + return $conflicts; + } + + /** + * Get conflicts content for download. This is generally a merged file, but preserving conflicts and adding explanations to it. + * A user could then go through this file, search for the conflicts and changes the code accordingly. * * @param string $label1 the cvs file version/label from the original set of lines * @param string $label2 the cvs file version/label from the new set of lines * @param string $label_sep the explanation between label1 and label2 - more of a helper for the user - * @param bool $get_conflicts if set to true only the number of conflicts is returned - * @param bool $merge_new if set to true the merged output will have the new file contents on a conflicting merge * * @return mixed the merged output */ - function merged_output($label1 = 'CURRENT_FILE', $label2 = 'NEW_FILE', $label_sep = 'DIFF_SEP_EXPLAIN', $get_conflicts = false, $merge_new = false) + function get_conflicts_content($label1 = 'CURRENT_FILE', $label2 = 'NEW_FILE', $label_sep = 'DIFF_SEP_EXPLAIN') { global $user; - if ($get_conflicts) - { - foreach ($this->_edits as $edit) - { - if ($edit->is_conflict()) - { - $this->_conflicting_blocks++; - } - } - - return $this->_conflicting_blocks; - } - $label1 = (!empty($user->lang[$label1])) ? $user->lang[$label1] : $label1; $label2 = (!empty($user->lang[$label2])) ? $user->lang[$label2] : $label2; $label_sep = (!empty($user->lang[$label_sep])) ? $user->lang[$label_sep] : $label_sep; @@ -506,15 +510,12 @@ class diff3 extends diff { if ($edit->is_conflict()) { - if (!$merge_new) - { - $lines = array_merge($lines, array('<<<<<<<' . ($label1 ? ' ' . $label1 : '')), $edit->final1, array('=======' . ($label_sep ? ' ' . $label_sep : '')), $edit->final2, array('>>>>>>>' . ($label2 ? ' ' . $label2 : ''))); - } - else - { - $lines = array_merge($lines, $edit->final1); - } - $this->_conflicting_blocks++; + // Start conflict label + $label_start = array('<<< ' . $label1); + $label_mid = array('=== ' . $label_sep); + $label_end = array('>>> ' . $label2); + + $lines = array_merge($lines, $label_start, $edit->final1, $label_mid, $edit->final2, $label_end); } else { @@ -821,4 +822,4 @@ class diff3_block_builder } } -?> \ No newline at end of file +?> diff --git a/phpBB/includes/diff/renderer.php b/phpBB/includes/diff/renderer.php index 02fb6ccc37..9144e0ab82 100644 --- a/phpBB/includes/diff/renderer.php +++ b/phpBB/includes/diff/renderer.php @@ -857,4 +857,4 @@ class diff_renderer_side_by_side extends diff_renderer } -?> \ No newline at end of file +?> -- cgit v1.2.1 From fce20fd8988d83e27e76ea057c25d189347df400 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Tue, 13 Jan 2009 10:55:04 +0000 Subject: TortoiseMerge seems to mess up the newlines... very very annoying bug. git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9254 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/diff/diff.php | 4 ++-- phpBB/includes/diff/renderer.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'phpBB/includes/diff') diff --git a/phpBB/includes/diff/diff.php b/phpBB/includes/diff/diff.php index 70a4166b9c..c54f139161 100644 --- a/phpBB/includes/diff/diff.php +++ b/phpBB/includes/diff/diff.php @@ -107,7 +107,7 @@ class diff * * Example: * - * $diff = &new diff($lines1, $lines2); + * $diff = new diff($lines1, $lines2); * $rev = $diff->reverse(); * * @@ -822,4 +822,4 @@ class diff3_block_builder } } -?> +?> \ No newline at end of file diff --git a/phpBB/includes/diff/renderer.php b/phpBB/includes/diff/renderer.php index 9144e0ab82..02fb6ccc37 100644 --- a/phpBB/includes/diff/renderer.php +++ b/phpBB/includes/diff/renderer.php @@ -857,4 +857,4 @@ class diff_renderer_side_by_side extends diff_renderer } -?> +?> \ No newline at end of file -- cgit v1.2.1 From 4b176e6ca71e3e05157631372945f4917439b15b Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Mon, 26 Jan 2009 16:56:43 +0000 Subject: and once more with feeling git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9303 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/diff/diff.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'phpBB/includes/diff') diff --git a/phpBB/includes/diff/diff.php b/phpBB/includes/diff/diff.php index c54f139161..1533c4d7f3 100644 --- a/phpBB/includes/diff/diff.php +++ b/phpBB/includes/diff/diff.php @@ -511,9 +511,9 @@ class diff3 extends diff if ($edit->is_conflict()) { // Start conflict label - $label_start = array('<<< ' . $label1); - $label_mid = array('=== ' . $label_sep); - $label_end = array('>>> ' . $label2); + $label_start = array('<<<<<<< ' . $label1); + $label_mid = array('======= ' . $label_sep); + $label_end = array('>>>>>>> ' . $label2); $lines = array_merge($lines, $label_start, $edit->final1, $label_mid, $edit->final2, $label_end); } -- cgit v1.2.1 From 88ab6cb3bb4fa18ff09aaa69479da5e1563b6dde Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Fri, 1 May 2009 11:08:48 +0000 Subject: stupid me forgot to add a function for backwards compatibility :/ git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9505 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/diff/diff.php | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'phpBB/includes/diff') diff --git a/phpBB/includes/diff/diff.php b/phpBB/includes/diff/diff.php index 1533c4d7f3..2adc3a3e6e 100644 --- a/phpBB/includes/diff/diff.php +++ b/phpBB/includes/diff/diff.php @@ -516,6 +516,7 @@ class diff3 extends diff $label_end = array('>>>>>>> ' . $label2); $lines = array_merge($lines, $label_start, $edit->final1, $label_mid, $edit->final2, $label_end); + $this->_conflicting_blocks++; } else { @@ -526,6 +527,16 @@ class diff3 extends diff return $lines; } + /** + * Return merged output (used by the renderer) + * + * @return mixed the merged output + */ + function merged_output() + { + return $this->get_conflicts_content(); + } + /** * Merge the output and use the new file code for conflicts */ -- cgit v1.2.1