Hiding mercurial repos that are private

master
Nathan Adams 2015-07-12 17:10:26 -05:00
parent fd162f97fc
commit 2a020ba092
2 changed files with 15 additions and 0 deletions

View File

@ -5,6 +5,7 @@
# Path to repo or hgweb config to serve (see 'hg help hgweb')
# config = "/path/to/repo/or/config"
import os
config = "/home/www/indefero/scripts/hgweb.config"
# Uncomment and adjust if Mercurial is not installed system-wide
@ -17,4 +18,9 @@ config = "/home/www/indefero/scripts/hgweb.config"
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgwebdir, wsgicgi
application = hgwebdir(config)
newrepos = []
for repo in application.repos:
if not os.path.isfile(repo[1] + "/.hide"):
newrepos.append(repo)
application.repos = newrepos
wsgicgi.launch(application)

View File

@ -178,6 +178,7 @@ class IDF_Plugin_SyncMercurial
$shortname = $project->shortname;
$hgrc_file = Pluf::f('idf_plugin_syncmercurial_path').sprintf('/%s/.hg/hgrc', $shortname);
// Get allow_push list
$allow_push = '';
$mem = $project->getMembershipData();
@ -216,6 +217,7 @@ class IDF_Plugin_SyncMercurial
foreach (Pluf::factory('IDF_Project')->getList() as $project) {
$conf = new IDF_Conf();
$conf->setProject($project);
$hide_file = Pluf::f('idf_plugin_syncmercurial_path').sprintf('/%s/.hide', $project->shortname);
if ($project->private == true){
$mem = $project->getMembershipData();
$user = '';
@ -236,6 +238,13 @@ class IDF_Plugin_SyncMercurial
$fcontent .= sprintf('AuthUserFile %s', Pluf::f('idf_plugin_syncmercurial_passwd_file'))."\n";
$fcontent .= sprintf('Require user %s', $user)."\n";
$fcontent .= '</Location>'."\n\n";
try {
file_put_contents($hide_file, ' ');
} catch (Exception $e) { }
} else {
try {
unlink($hide_file);
} catch (Exception $e) { }
}
}
file_put_contents($private_file, $fcontent, LOCK_EX);