* of anyone working on large branches in git to setup config that show up only
* when specific branches are currently checked out.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
*/
protected $basedir;
/**
- * Map of repo URLs to viewer URLs.
- * Key is a pattern passed to preg_match() and preg_replace(),
- * without the delimiters (which are #) and must match the whole URL.
- * The value is the replacement for the key (it can contain $1, etc.)
- * %h will be replaced by the short SHA-1 (7 first chars) and %H by the
- * full SHA-1 of the HEAD revision.
+ * Map of repo URLs to viewer URLs. Access via static method getViewers().
*/
- protected $viewers = array(
- 'https://gerrit.wikimedia.org/r/p/(.*)' => 'https://gerrit.wikimedia.org/r/gitweb?p=$1;h=%H',
- 'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' => 'https://gerrit.wikimedia.org/r/gitweb?p=$1;h=%H',
- );
+ private static $viewers = false;
/**
* @param $dir string The root directory of the repo where the .git dir can be found
if ( preg_match( "/ref: (.*)/", $HEAD, $m ) ) {
return rtrim( $m[1] );
} else {
- return $HEAD;
+ return rtrim( $HEAD );
}
}
if ( substr( $url, -4 ) !== '.git' ) {
$url .= '.git';
}
- foreach( $this->viewers as $repo => $viewer ) {
+ foreach( self::getViewers() as $repo => $viewer ) {
$pattern = '#^' . $repo . '$#';
if ( preg_match( $pattern, $url ) ) {
$viewerUrl = preg_replace( $pattern, $viewer, $url );
public static function headViewUrl() {
return self::repo()->getHeadViewUrl();
}
+
+ /**
+ * Gets the list of repository viewers
+ * @return array
+ */
+ protected static function getViewers() {
+ global $wgGitRepositoryViewers;
+
+ if( self::$viewers === false ) {
+ self::$viewers = $wgGitRepositoryViewers;
+ wfRunHooks( 'GitViewers', array( &self::$viewers ) );
+ }
+
+ return self::$viewers;
+ }
}