From 2a020ba09212e24f232716d92e392ef19684b7b8 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Sun, 12 Jul 2015 17:10:26 -0500 Subject: [PATCH] Hiding mercurial repos that are private --- indefero/scripts/hgweb.cgi | 6 ++++++ indefero/src/IDF/Plugin/SyncMercurial.php | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/indefero/scripts/hgweb.cgi b/indefero/scripts/hgweb.cgi index f81a935..dec2b26 100644 --- a/indefero/scripts/hgweb.cgi +++ b/indefero/scripts/hgweb.cgi @@ -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) diff --git a/indefero/src/IDF/Plugin/SyncMercurial.php b/indefero/src/IDF/Plugin/SyncMercurial.php index 1e44273..edcffaf 100644 --- a/indefero/src/IDF/Plugin/SyncMercurial.php +++ b/indefero/src/IDF/Plugin/SyncMercurial.php @@ -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 .= ''."\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);