Merge "DifferenceEngine: Autodetect if wikidiff2 is installed"

This commit is contained in:
jenkins-bot 2016-07-06 21:17:40 +00:00 committed by Gerrit Code Review
commit b2f295eb6d
2 changed files with 17 additions and 13 deletions

View file

@ -8059,10 +8059,9 @@ $wgUpdateRowsPerQuery = 100;
/**
* 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;

View file

@ -923,18 +923,23 @@ class DifferenceEngine extends ContextSource {
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_' );