jenkins-bot has submitted this change and it was merged. Change subject: DifferenceEngine: Autodetect if wikidiff2 is installed ......................................................................
DifferenceEngine: Autodetect if wikidiff2 is installed If wikidiff2 is installed, use it for diffing without requiring $wgExternalDiffEngine to be set to 'wikidiff2'. Also add some extra sanity-checking by coercing all non-string values to false and make sure the custom diff executable passes `is_executable()`. Change-Id: I32b670ebf613be9f1c034d65d006829a215614da --- M includes/DefaultSettings.php M includes/diff/DifferenceEngine.php 2 files changed, 17 insertions(+), 13 deletions(-) Approvals: Chad: Looks good to me, approved jenkins-bot: Verified diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 4e6f6fb..6664fe0 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -8049,10 +8049,9 @@ /** * Name of the external diff engine to use. Supported values: - * * false: default PHP implementation - * * 'wikidiff2': Wikimedia's fast difference engine implemented as a PHP/HHVM module - * * 'wikidiff' and 'wikidiff3' are treated as false for backwards compatibility - * * any other string is treated as a path to external diff executable + * * string: path to an external diff executable + * * false: wikidiff2 PHP/HHVM module if installed, otherwise the default PHP implementation + * * 'wikidiff', 'wikidiff2', and 'wikidiff3' are treated as false for backwards compatibility */ $wgExternalDiffEngine = false; diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index f35356c..6bb8874 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -891,18 +891,23 @@ if ( $wgExternalDiffEngine == 'wikidiff' || $wgExternalDiffEngine == 'wikidiff3' ) { wfDeprecated( "\$wgExternalDiffEngine = '{$wgExternalDiffEngine}'", '1.27' ); $wgExternalDiffEngine = false; + } elseif ( $wgExternalDiffEngine == 'wikidiff2' ) { + // Same as above, but with no deprecation warnings + $wgExternalDiffEngine = false; + } elseif ( !is_string( $wgExternalDiffEngine ) ) { + // And prevent people from shooting themselves in the foot... + wfWarn( '$wgExternalDiffEngine is set to a non-string value, forcing it to false' ); + $wgExternalDiffEngine = false; } - if ( $wgExternalDiffEngine == 'wikidiff2' ) { - if ( function_exists( 'wikidiff2_do_diff' ) ) { - # Better external diff engine, the 2 may some day be dropped - # This one does the escaping and segmenting itself - $text = wikidiff2_do_diff( $otext, $ntext, 2 ); - $text .= $this->debug( 'wikidiff2' ); + if ( function_exists( 'wikidiff2_do_diff' ) && $wgExternalDiffEngine === false ) { + # Better external diff engine, the 2 may some day be dropped + # This one does the escaping and segmenting itself + $text = wikidiff2_do_diff( $otext, $ntext, 2 ); + $text .= $this->debug( 'wikidiff2' ); - return $text; - } - } elseif ( $wgExternalDiffEngine !== false ) { + return $text; + } elseif ( $wgExternalDiffEngine !== false && is_executable( $wgExternalDiffEngine ) ) { # Diff via the shell $tmpDir = wfTempDir(); $tempName1 = tempnam( $tmpDir, 'diff_' ); -- To view, visit https://gerrit.wikimedia.org/r/297691 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I32b670ebf613be9f1c034d65d006829a215614da Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: REL1_27 Gerrit-Owner: Chad <ch...@wikimedia.org> Gerrit-Reviewer: Chad <ch...@wikimedia.org> Gerrit-Reviewer: Legoktm <legoktm.wikipe...@gmail.com> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits