This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "FusionForge".

The branch, master has been updated
       via  bec32568c6d997da3906dc4637fdb03e7fbc2e9e (commit)
       via  fdd5b44ed0ab72caed72818a507f92a204bf3c0f (commit)
       via  982697a0894399b0c91c9dae99a4ba889baf5a9e (commit)
       via  8aca00b100aceeb8269050f1bb00763e37ff865a (commit)
       via  2aaffcfc303d7ad513eba279314fe5cf6082e988 (commit)
       via  851f8d50aa0bb8d4fef79502aa069ef520688a65 (commit)
       via  57032afc22892d72660cd5cdfad7aab1d5a3da79 (commit)
      from  002f0a0c559e022406bff1b904477f36ff56dc3b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=bec32568c6d997da3906dc4637fdb03e7fbc2e9e

commit bec32568c6d997da3906dc4637fdb03e7fbc2e9e
Author: Franck Villaume <[email protected]>
Date:   Sun Jan 29 17:14:06 2017 +0100

    scmhg: disable secondary repo feature

diff --git a/src/plugins/scmhg/common/HgPlugin.class.php 
b/src/plugins/scmhg/common/HgPlugin.class.php
index 11d4d73..18da24a 100644
--- a/src/plugins/scmhg/common/HgPlugin.class.php
+++ b/src/plugins/scmhg/common/HgPlugin.class.php
@@ -43,9 +43,9 @@ Offer DAV or SSH access.");
                $this->_addHook('scm_generate_snapshots');
                $this->_addHook('scm_gather_stats');
                $this->_addHook('activity');
-               $this->_addHook('scm_admin_form');
-               $this->_addHook('scm_delete_repo');
-               $this->_addHook('scm_add_repo');
+//             $this->_addHook('scm_admin_form');
+//             $this->_addHook('scm_delete_repo');
+//             $this->_addHook('scm_add_repo');
                $this->register();
        }
 
@@ -690,161 +690,161 @@ Offer DAV or SSH access.");
                return true;
        }
 
-       function scm_add_repo(&$params) {
-               $project = $this->checkParams($params);
-               if (!$project) {
-                       return false;
-               }
-               if (!$project->usesPlugin($this->name)) {
-                       return false;
-               }
-
-               if (!isset($params['repo_name'])) {
-                       return false;
-               }
-
-               if ($params['repo_name'] == $project->getUnixName()) {
-                       $params['error_msg'] = sprintf(_('A repository %s 
already exists'), $params['repo_name']);
-                       return false;
-               }
-
-               if (! util_is_valid_repository_name($params['repo_name'])) {
-                       $params['error_msg'] = _('This repository name is not 
valid');
-                       return false;
-               }
-
-               $result = db_query_params('SELECT count(*) AS count FROM 
scm_secondary_repos WHERE group_id=$1 AND repo_name = $2 AND plugin_id=$3',
-                                         array($params['group_id'],
-                                                $params['repo_name'],
-                                                $this->getID()));
-               if (!$result) {
-                       $params['error_msg'] = db_error();
-                       return false;
-               }
-               if (db_result($result, 0, 'count')) {
-                       $params['error_msg'] = sprintf(_('A repository %s 
already exists'), $params['repo_name']);
-                       return false;
-               }
-
-               $description = '';
-               $clone = '';
-               if (isset($params['clone'])) {
-                       $url = $params['clone'];
-                       if ($url == '') {
-                               // Start from empty
-                               $clone = $url;
-                       } elseif (preg_match('|^https?://|', $url)) {
-                               // External URLs: OK
-                               $clone = $url;
-                       } elseif ($url == $project->getUnixName()) {
-                               $clone = $url;
-                       } elseif (($result = db_query_params('SELECT count(*) 
AS count FROM scm_secondary_repos WHERE group_id=$1 AND repo_name = $2 AND 
plugin_id=$3',
-                                                            
array($project->getID(),
-                                                                   $url,
-                                                                   
$this->getID())))
-                                 && db_result($result, 0, 'count')) {
-                               // Local repo: try to clone from an existing 
repo in same project
-                               // Repository found
-                               $clone = $url;
-                       } else {
-                               $params['error_msg'] = _('Invalid URL from 
which to clone');
-                               $clone = '';
-                               return false;
-                       }
-               }
-               if (isset($params['description'])) {
-                       $description = $params['description'];
-               }
-               if ($clone && !$description) {
-                       $description = sprintf(_('Clone of %s'), 
$params['clone']);
-               }
-               if (!$description) {
-                       $description = "Hg repository $params[repo_name] for 
project ".$project->getUnixName();
-               }
-
-               $result = db_query_params('INSERT INTO scm_secondary_repos 
(group_id, repo_name, description, clone_url, plugin_id) VALUES ($1, $2, $3, 
$4, $5)',
-                                          array($params['group_id'],
-                                                 $params['repo_name'],
-                                                 $description,
-                                                 $clone,
-                                                 $this->getID()));
-               if (! $result) {
-                       $params['error_msg'] = db_error();
-                       return false;
-               }
-
-               plugin_hook('scm_admin_update', $params);
-               return true;
-       }
-
-       function scm_admin_form(&$params) {
-               global $HTML;
-               $project = $this->checkParams($params);
-               if (!$project) {
-                       return false;
-               }
-               if (!$project->usesPlugin($this->name)) {
-                       return false;
-               }
-
-               session_require_perm('project_admin', $params['group_id']);
-
-               $project_name = $project->getUnixName();
-               $result = db_query_params('SELECT repo_name, description, 
clone_url FROM scm_secondary_repos WHERE group_id=$1 AND next_action = $2 AND 
plugin_id=$3 ORDER BY repo_name',
-                                         array($params['group_id'],
-                                                SCM_EXTRA_REPO_ACTION_UPDATE,
-                                                $this->getID()));
-               if (!$result) {
-                       $params['error_msg'] = db_error();
-                       return false;
-               }
-               $existing_repos = array();
-               while($data = db_fetch_array($result)) {
-                       $existing_repos[] = array('repo_name' => 
$data['repo_name'],
-                                                 'description' => 
$data['description'],
-                                                 'clone_url' => 
$data['clone_url']);
-               }
-               if (count($existing_repos) == 0) {
-                       echo $HTML->information(_('No extra Hg repository for 
project').' '.$project_name);
-               } else {
-                       echo html_e('h2', array(), sprintf(ngettext('Extra Hg 
repository for project %1$s',
-                                                                       'Extra 
Hg repositories for project %1$s',
-                                                                       
count($existing_repos)), $project_name));
-                       $titleArr = array(_('Repository name'), ('Initial 
repository description'), _('Initial clone URL (if any)'), _('Delete'));
-                       echo $HTML->listTableTop($titleArr);
-                       foreach ($existing_repos as $key => $repo) {
-                               $cells = array();
-                               $cells[][] = html_e('tt', array(), 
$repo['repo_name']);
-                               $cells[][] = $repo['description'];
-                               $cells[][] = $repo['clone_url'];
-                               $deleteForm = $HTML->openForm(array('name' => 
'form_delete_repo_'.$repo['repo_name'], 'action' => 
getStringFromServer('PHP_SELF'), 'method' => 'post'));
-                               $deleteForm .= html_e('input', array('type' => 
'hidden', 'name' => 'group_id', 'value' => $params['group_id']));
-                               $deleteForm .= html_e('input', array('type' => 
'hidden', 'name' => 'delete_repository', 'value' => 1));
-                               $deleteForm .= html_e('input', array('type' => 
'hidden', 'name' => 'repo_name', 'value' => $repo['repo_name']));
-                               $deleteForm .= html_e('input', array('type' => 
'hidden', 'name' => 'scm_enable_anonymous', 'value' => 
($project->enableAnonSCM()? 1 : 0)));
-                               $deleteForm .= html_e('input', array('type' => 
'submit', 'name' => 'submit', 'value' => _('Delete')));
-                               $deleteForm .= $HTML->closeForm();
-                               $cells[][] = $deleteForm;
-                               echo $HTML->multiTableRow(array('class' => 
$HTML->boxGetAltRowStyle($key, true)), $cells);
-                       }
-                       echo $HTML->listTableBottom();
-               }
-
-               echo html_e('h2', array(), sprintf(_('Create new Hg repository 
for project %s'), $project_name));
-               echo $HTML->openForm(array('name' => 'form_create_repo', 
'action' => getStringFromServer('PHP_SELF'), 'method' => 'post'));
-               echo html_e('input', array('type' => 'hidden', 'name' => 
'group_id', 'value' => $params['group_id']));
-               echo html_e('input', array('type' => 'hidden', 'name' => 
'create_repository', 'value' => 1));
-               echo html_e('p', array(), html_e('strong', array(), 
_('Repository name')._(':')).utils_requiredField().html_e('br').
-                               html_e('input', array('type' => 'text', 
'required' => 'required', 'size' => 20, 'name' => 'repo_name', 'value' => '')));
-               echo html_e('p', array(), html_e('strong', array(), 
_('Description')._(':')).html_e('br').
-                               html_e('input', array('type' => 'text', 'size' 
=> 60, 'name' => 'description', 'value' => '')));
-               echo html_e('p', array(), html_e('strong', array(), _('Initial 
clone URL (or name of an existing repository in this project; leave empty to 
start with an empty repository)')._(':')).html_e('br').
-                               html_e('input', array('type' => 'text', 'size' 
=> 60, 'name' => 'clone', 'value' => $project_name)));
-               echo html_e('input', array('type' => 'hidden', 'name' => 
'scm_enable_anonymous', 'value' => ($project->enableAnonSCM()? 1 : 0)));
-               echo html_e('input', array('type' => 'submit', 'name' => 
'cancel', 'value' => _('Cancel')));
-               echo html_e('input', array('type' => 'submit', 'name' => 
'submit', 'value' => _('Submit')));
-               echo $HTML->closeForm();
-       }
+//     function scm_add_repo(&$params) {
+//             $project = $this->checkParams($params);
+//             if (!$project) {
+//                     return false;
+//             }
+//             if (!$project->usesPlugin($this->name)) {
+//                     return false;
+//             }
+//
+//             if (!isset($params['repo_name'])) {
+//                     return false;
+//             }
+//
+//             if ($params['repo_name'] == $project->getUnixName()) {
+//                     $params['error_msg'] = sprintf(_('A repository %s 
already exists'), $params['repo_name']);
+//                     return false;
+//             }
+//
+//             if (! util_is_valid_repository_name($params['repo_name'])) {
+//                     $params['error_msg'] = _('This repository name is not 
valid');
+//                     return false;
+//             }
+//
+//             $result = db_query_params('SELECT count(*) AS count FROM 
scm_secondary_repos WHERE group_id=$1 AND repo_name = $2 AND plugin_id=$3',
+//                                       array($params['group_id'],
+//                                              $params['repo_name'],
+//                                              $this->getID()));
+//             if (!$result) {
+//                     $params['error_msg'] = db_error();
+//                     return false;
+//             }
+//             if (db_result($result, 0, 'count')) {
+//                     $params['error_msg'] = sprintf(_('A repository %s 
already exists'), $params['repo_name']);
+//                     return false;
+//             }
+//
+//             $description = '';
+//             $clone = '';
+//             if (isset($params['clone'])) {
+//                     $url = $params['clone'];
+//                     if ($url == '') {
+//                             // Start from empty
+//                             $clone = $url;
+//                     } elseif (preg_match('|^https?://|', $url)) {
+//                             // External URLs: OK
+//                             $clone = $url;
+//                     } elseif ($url == $project->getUnixName()) {
+//                             $clone = $url;
+//                     } elseif (($result = db_query_params('SELECT count(*) 
AS count FROM scm_secondary_repos WHERE group_id=$1 AND repo_name = $2 AND 
plugin_id=$3',
+//                                                          
array($project->getID(),
+//                                                                 $url,
+//                                                                 
$this->getID())))
+//                               && db_result($result, 0, 'count')) {
+//                             // Local repo: try to clone from an existing 
repo in same project
+//                             // Repository found
+//                             $clone = $url;
+//                     } else {
+//                             $params['error_msg'] = _('Invalid URL from 
which to clone');
+//                             $clone = '';
+//                             return false;
+//                     }
+//             }
+//             if (isset($params['description'])) {
+//                     $description = $params['description'];
+//             }
+//             if ($clone && !$description) {
+//                     $description = sprintf(_('Clone of %s'), 
$params['clone']);
+//             }
+//             if (!$description) {
+//                     $description = "Hg repository $params[repo_name] for 
project ".$project->getUnixName();
+//             }
+//
+//             $result = db_query_params('INSERT INTO scm_secondary_repos 
(group_id, repo_name, description, clone_url, plugin_id) VALUES ($1, $2, $3, 
$4, $5)',
+//                                        array($params['group_id'],
+//                                               $params['repo_name'],
+//                                               $description,
+//                                               $clone,
+//                                               $this->getID()));
+//             if (! $result) {
+//                     $params['error_msg'] = db_error();
+//                     return false;
+//             }
+//
+//             plugin_hook('scm_admin_update', $params);
+//             return true;
+//     }
+
+//     function scm_admin_form(&$params) {
+//             global $HTML;
+//             $project = $this->checkParams($params);
+//             if (!$project) {
+//                     return false;
+//             }
+//             if (!$project->usesPlugin($this->name)) {
+//                     return false;
+//             }
+//
+//             session_require_perm('project_admin', $params['group_id']);
+//
+//             $project_name = $project->getUnixName();
+//             $result = db_query_params('SELECT repo_name, description, 
clone_url FROM scm_secondary_repos WHERE group_id=$1 AND next_action = $2 AND 
plugin_id=$3 ORDER BY repo_name',
+//                                       array($params['group_id'],
+//                                              SCM_EXTRA_REPO_ACTION_UPDATE,
+//                                              $this->getID()));
+//             if (!$result) {
+//                     $params['error_msg'] = db_error();
+//                     return false;
+//             }
+//             $existing_repos = array();
+//             while($data = db_fetch_array($result)) {
+//                     $existing_repos[] = array('repo_name' => 
$data['repo_name'],
+//                                               'description' => 
$data['description'],
+//                                               'clone_url' => 
$data['clone_url']);
+//             }
+//             if (count($existing_repos) == 0) {
+//                     echo $HTML->information(_('No extra Hg repository for 
project').' '.$project_name);
+//             } else {
+//                     echo html_e('h2', array(), sprintf(ngettext('Extra Hg 
repository for project %1$s',
+//                                                                     'Extra 
Hg repositories for project %1$s',
+//                                                                     
count($existing_repos)), $project_name));
+//                     $titleArr = array(_('Repository name'), ('Initial 
repository description'), _('Initial clone URL (if any)'), _('Delete'));
+//                     echo $HTML->listTableTop($titleArr);
+//                     foreach ($existing_repos as $key => $repo) {
+//                             $cells = array();
+//                             $cells[][] = html_e('tt', array(), 
$repo['repo_name']);
+//                             $cells[][] = $repo['description'];
+//                             $cells[][] = $repo['clone_url'];
+//                             $deleteForm = $HTML->openForm(array('name' => 
'form_delete_repo_'.$repo['repo_name'], 'action' => 
getStringFromServer('PHP_SELF'), 'method' => 'post'));
+//                             $deleteForm .= html_e('input', array('type' => 
'hidden', 'name' => 'group_id', 'value' => $params['group_id']));
+//                             $deleteForm .= html_e('input', array('type' => 
'hidden', 'name' => 'delete_repository', 'value' => 1));
+//                             $deleteForm .= html_e('input', array('type' => 
'hidden', 'name' => 'repo_name', 'value' => $repo['repo_name']));
+//                             $deleteForm .= html_e('input', array('type' => 
'hidden', 'name' => 'scm_enable_anonymous', 'value' => 
($project->enableAnonSCM()? 1 : 0)));
+//                             $deleteForm .= html_e('input', array('type' => 
'submit', 'name' => 'submit', 'value' => _('Delete')));
+//                             $deleteForm .= $HTML->closeForm();
+//                             $cells[][] = $deleteForm;
+//                             echo $HTML->multiTableRow(array('class' => 
$HTML->boxGetAltRowStyle($key, true)), $cells);
+//                     }
+//                     echo $HTML->listTableBottom();
+//             }
+
+//             echo html_e('h2', array(), sprintf(_('Create new Hg repository 
for project %s'), $project_name));
+//             echo $HTML->openForm(array('name' => 'form_create_repo', 
'action' => getStringFromServer('PHP_SELF'), 'method' => 'post'));
+//             echo html_e('input', array('type' => 'hidden', 'name' => 
'group_id', 'value' => $params['group_id']));
+//             echo html_e('input', array('type' => 'hidden', 'name' => 
'create_repository', 'value' => 1));
+//             echo html_e('p', array(), html_e('strong', array(), 
_('Repository name')._(':')).utils_requiredField().html_e('br').
+//                             html_e('input', array('type' => 'text', 
'required' => 'required', 'size' => 20, 'name' => 'repo_name', 'value' => '')));
+//             echo html_e('p', array(), html_e('strong', array(), 
_('Description')._(':')).html_e('br').
+//                             html_e('input', array('type' => 'text', 'size' 
=> 60, 'name' => 'description', 'value' => '')));
+//             echo html_e('p', array(), html_e('strong', array(), _('Initial 
clone URL (or name of an existing repository in this project; leave empty to 
start with an empty repository)')._(':')).html_e('br').
+//                             html_e('input', array('type' => 'text', 'size' 
=> 60, 'name' => 'clone', 'value' => $project_name)));
+//             echo html_e('input', array('type' => 'hidden', 'name' => 
'scm_enable_anonymous', 'value' => ($project->enableAnonSCM()? 1 : 0)));
+//             echo html_e('input', array('type' => 'submit', 'name' => 
'cancel', 'value' => _('Cancel')));
+//             echo html_e('input', array('type' => 'submit', 'name' => 
'submit', 'value' => _('Submit')));
+//             echo $HTML->closeForm();
+//     }
 
 }
 

https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=fdd5b44ed0ab72caed72818a507f92a204bf3c0f

commit fdd5b44ed0ab72caed72818a507f92a204bf3c0f
Author: Franck Villaume <[email protected]>
Date:   Sun Jan 29 16:48:53 2017 +0100

    scmhg: rewrite to fit with 6.0. currently only support SSH and online 
browsing

diff --git a/src/plugins/scmhg/common/HgPlugin.class.php 
b/src/plugins/scmhg/common/HgPlugin.class.php
index 89af2bc..11d4d73 100644
--- a/src/plugins/scmhg/common/HgPlugin.class.php
+++ b/src/plugins/scmhg/common/HgPlugin.class.php
@@ -76,9 +76,7 @@ Offer DAV or SSH access.");
                if (forge_get_config('use_dav', 'scmhg')) {
                        $protocol = forge_get_config('use_ssl', 'scmhg')? 
'https' : 'http';
                        $b .= html_e('p', array(), _("This project's Mercurial 
repository can be checked out through anonymous access with the following 
command")._(':'));
-                       $b .= html_e('p', array(), html_e('tt', array(), 'hg 
clone '.$protocol.'://'.forge_get_config('anonhg_login', 
'scmhg').'@'.$this->getBoxForProject($project).'/'.'hg'.'/'.$project->getUnixName().'/').
-                                               html_e('br').
-                                               _('The password is 
').forge_get_config('anonhg_password', 'scmhg'));
+                       $b .= html_e('p', array(), html_e('tt', array(), 'hg 
clone 
'.$protocol.'://'.forge_get_config('scm_host').'/anonscm/'.'hg'.'/'.$project->getUnixName()));
                } else {
                        $b .= $HTML->warning_msg(_('Please contact forge 
administrator, scmhg plugin is not correctly configured'));
                }
@@ -86,44 +84,97 @@ Offer DAV or SSH access.");
        }
 
        function getInstructionsForRW($project) {
-               $protocol = forge_get_config('use_ssl', 'scmhg')? 'https' : 
'http';
+               $repo_list = array($project->getUnixName());
+
+               $result = db_query_params('SELECT repo_name FROM 
scm_secondary_repos WHERE group_id=$1 AND next_action = $2 AND plugin_id=$3 
ORDER BY repo_name',
+                                          array($project->getID(),
+                                                 SCM_EXTRA_REPO_ACTION_UPDATE,
+                                                 $this->getID()));
+               $rows = db_numrows($result);
+               for ($i=0; $i<$rows; $i++) {
+                       $repo_list[] = db_result($result, $i, 'repo_name');
+               }
+               $b = '';
+               $b .= html_e('h2', array(), _('Developer Access'));
+               $b .= html_e('p', array(),
+                               ngettext('Only project developers can access 
the Hg repository via this method.',
+                               'Only project developers can access the Hg 
repositories via this method.',
+                               count($repo_list)));
+               $b .= '<div id="tabber">';
+               $b .= '<ul>';
+               if (forge_get_config('use_ssh', 'scmhg')) {
+                       $b .= '<li><a href="#tabber-ssh">'._('via 
SSH').'</a></li>';
+                       $configuration = 1;
+               }
+               if (forge_get_config('use_dav', 'scmhg')) {
+                       $b .= '<li><a href="#tabber-dav">'._('via 
"DAV"').'</a></li>';
+                       $configuration = 1;
+               }
+               $b .= '</ul>';
+               if (!isset($configuration)) {
+                       return $HTML->error_msg(_('Error')._(': ')._('No access 
protocol has been allowed for the Hg plugin in scmhg.ini: use_ssh and use_dav 
are disabled'));
+               }
                if (session_loggedin()) {
                        $u = user_get_object(user_getid());
                        $d = $u->getUnixName();
-                       $b = '';
                        if (forge_get_config('use_ssh', 'scmhg')) {
-                               $b .= html_e('h2', array(), 
sprintf(_('Developer %s Access via SSH'), 'Mercurial'));
-                               $b .= html_e('p', array(), _('Read/write access 
to Mercurial tree is allowed for authenticated users.').
-                                       ' '._('SSH must be installed on your 
client machine.').
-                                       ' '._('Enter your site password when 
prompted.'));
-                               // Warning : the ssh uri MUST be this form : 
ssh://username@scmbox//path/reponame
-                               //            HAVE YOU SEEN THE // starting the 
path ? Keep in mind the double /
-                               $b .= html_e('p', array(), html_e('tt', 
array(), 'hg clone 
ssh://'.$d.'@'.$this->getBoxForProject($project).'/'.forge_get_config('repos_path',
 'scmhg').'/'.$project->getUnixName()));
+                               $b .= '<div id="tabber-ssh" class="tabbertab" 
>';
+                               $b .= html_e('p', array(), _('SSH must be 
installed on your client machine.'));
+                               $htmlRepo = '';
+                               foreach ($repo_list as $repo_name) {
+                                       // Warning : the ssh uri MUST be this 
form : ssh://username@scmbox//path/reponame
+                                       //           HAVE YOU SEEN THE // 
starting the path ? Keep in mind the double /
+                                       $htmlRepo .= html_e('tt', array(), 'hg 
clone 
ssh://'.$d.'@'.forge_get_config('scm_host').'/'.forge_get_config('repos_path', 
'scmhg').'/'.$project->getUnixName()).html_e('br');
+                               }
+                               $b .= html_e('p', array(), $htmlRepo);
+                               $b .= '</div>';
                        }
                        if (forge_get_config('use_dav', 'scmhg')) {
-                               $b .= html_e('h2', array(), _('Developer 
Mercurial Access via HTTP'));
-                               $b .= html_e('p', array(), _('Only project 
developers can access the Mercurial tree via this method.').
-                                       ' '._('Enter your site password when 
prompted.'));
-                               $b .= html_e('p', array(), html_e('tt', 
array(), 'hg clone 
'.$protocol.'://<i>'.$d.'</i>@'.$this->getBoxForProject($project) .'/hg/'. 
$project->getUnixName()));
+                               $b .= '<div id="tabber-dav" class="tabbertab" 
>';
+                               $b .= html_e('p', array(), _('Enter your site 
password when prompted.'));
+                               $htmlRepo = '';
+                               $protocol = forge_get_config('use_ssl', 
'scmhg') ? 'https' : 'http';
+                               foreach ($repo_list as $repo_name) {
+                                       $htmlRepo .= html_e('tt', array(), 'hg 
clone 
'.$protocol.'://<i>'.$d.'</i>@'.forge_get_config('scm_host').'/authscm/'.$d.'/hg/'.
 $project->getUnixName()).html_e('br');
+                               }
+                               $b .= html_e('p', array(), $htmlRepo);
+                               $b .= '</div>';
                        }
                } else {
                        if (forge_get_config('use_ssh', 'scmhg')) {
-                               $d = html_e('em', array(), _('developername'));
-                               $b = html_e('h2', array(), sprintf(_('Developer 
%s Access via SSH'), 'Mercurial'));
-                               $b .= html_e('p', array(), sprintf(_('Only 
project developers can access the %s tree via this method.'), 'Mercurial').
-                                               ' '._('SSH must be installed on 
your client machine.').
-                                               ' '._('Substitute 
<em>developername</em> with the proper value.').
-                                               ' '._('Enter your site password 
when prompted.'));
-                               // Warning : the ssh uri MUST be this form : 
ssh://username@scmbox//path/reponame
-                               //            HAVE YOU SEEN THE // starting the 
path ? Keep in mind the double /
-                               $b .= html_e('p', array(), html_e('tt', 
array(), 'hg clone 
ssh://'.$d.'@'.$this->getBoxForProject($project).'/'.forge_get_config('repos_path',
 'scmhg').'/'.$project->getUnixName()));
-                       } else {
-                               $b = html_e('h2', array(), _('Developer 
Mercurial Access via HTTP'));
-                               $b .= html_e('p', array(), _('Only project 
developers can access the Mercurial tree via this method.').
-                                       ' '._('Enter your site password when 
prompted.'));
-                               $b .= html_e('p', array(), html_e('tt', 
array(), 'hg clone '.$protocol.'://'.html_e('i', array(), 
_('developername')).'@'.$this->getBoxForProject($project).'/hg/'.$project->getUnixName()));
+                               $b .= '<div id="tabber-ssh" class="tabbertab" 
>';
+                               $b .= html_e('p', array(),
+                                       ngettext('Only project developers can 
access the Hg repository via this method.',
+                                               'Only project developers can 
access the Hg repositories via this method.',
+                                               count($repo_list)).
+                                       ' '. _('SSH must be installed on your 
client machine.').
+                                       ' '. _('Substitute 
<em>developername</em> with the proper value.'));
+                               $htmlRepo = '';
+                               foreach ($repo_list as $repo_name) {
+                                       // Warning : the ssh uri MUST be this 
form : ssh://username@scmbox//path/reponame
+                                       //           HAVE YOU SEEN THE // 
starting the path ? Keep in mind the double /
+                                       $htmlRepo .= html_e('tt', array(), 'hg 
clone 
ssh://'.$d.'@'.forge_get_config('scm_host').'/'.forge_get_config('repos_path', 
'scmhg').'/'.$project->getUnixName()).html_e('br');
+                               }
+                               $b .= html_e('p', array(), $htmlRepo);
+                               $b .= '</div>';
+                       }
+                       if (forge_get_config('use_dav', 'scmhg')) {
+                               $protocol = forge_get_config('use_ssl', 
'scmhg')? 'https' : 'http';
+                               $b .= '<div id="tabber-dav" class="tabbertab" 
>';
+                               $b .= html_e('p', array(),
+                                       ngettext('Only project developers can 
access the Hg repository via this method.',
+                                               'Only project developers can 
access the Hg repositories via this method.',
+                                               count($repo_list)).
+                                       ' '. _('Enter your site password when 
prompted.'));
+                               $htmlRepo = '';
+                               foreach ($repo_list as $repo_name) {
+                                       $htmlRepo .= html_e('tt', array(), 'hg 
clone '.$protocol.'://'.html_e('i', array(), 
_('developername')).'@'.forge_get_config('scm_host').'/authscm/'.html_e('i', 
array(), _('developername')).'/hg/'.$project->getUnixName()).html_e('br');
+                               }
+                               $b .= html_e('p', array(), $htmlRepo);
+                               $b .= '</div>';
                        }
                }
+               $b .= '</div>';
                return $b;
        }
 
@@ -208,66 +259,70 @@ Offer DAV or SSH access.");
                }
                if ($project->usesPlugin($this->name)) {
                        if ($this->browserDisplayable($project)) {
-                               $iframesrc = 
'/plugins/scmhg/cgi-bin/'.$project->getUnixName().'.cgi';
+                               $protocol = forge_get_config('use_ssl', 
'scmgit')? 'https' : 'http';
+                               $box = forge_get_config('scm_host');
+                               $iframesrc = 
$protocol.'://'.$box.'/plugins/scmhg/cgi-bin/'.$project->getUnixName().'.cgi';
                                if ($params['commit']) {
                                        $iframesrc .= '/rev/'.$params['commit'];
                                } else {
                                        $iframesrc .=  
'?p='.$project->getUnixName();
                                }
-                               
htmlIframe($iframesrc,array('id'=>'scmhg_iframe'));
+                               
htmlIframe($iframesrc,array('id'=>'scmhg_iframe', 'absolute'=>true));
                        }
                }
        }
 
        function createOrUpdateRepo($params) {
                $project = $this->checkParams($params);
-               if (!$project) {
-                       return false;
-               }
+               if (!$project) return false;
+               if (!$project->isActive()) return false;
+               if (!$project->usesPlugin($this->name)) return false;
 
-               if (!$project->usesPlugin($this->name)) {
-                       return false;
-               }
+               $project_name = $project->getUnixName();
+               $unix_group_ro = $project_name . '_scmro';
+               $unix_group_rw = $project_name . '_scmrw';
 
-               $repo = forge_get_config('repos_path', 'scmhg') . '/' . 
$project->getUnixName();
-               if (forge_get_config('use_ssh', 'scmhg')) {
-                       $unix_group = 'scm_' . $project->getUnixName();
+               $repo = forge_get_config('repos_path', 'scmhg') . '/' . 
$project_name;
+               $root = forge_get_config('repos_path', 'scmhg') . '/' . 
$project_name;
+               if (!is_dir($root)) {
+                       system("mkdir -p $root");
+                       system("chgrp $unix_group_ro $root");
                }
-               if (forge_get_config('use_dav', 'scmhg')) {
-                       $unix_group = forge_get_config('apache_group');
-                       $unix_user = forge_get_config('apache_user');
+               if ($project->enableAnonSCM()) {
+                       system("chmod 2755 $root");
+               } else {
+                       system("chmod 2750 $root");
                }
 
-               system("mkdir -p $repo");
                /** per project configuration for http **/
-               if (forge_get_config('use_dav', 'scmhg')) {
-                       //get template hgweb.cgi
-                       $hgweb = 
forge_get_config('source_path').'/plugins/scmhg/www/cgi-bin/hgweb.cgi';
-                       $project_hgweb = 
forge_get_config('source_path').'/www/plugins/scmhg/cgi-bin/'.$project->getUnixName().'.cgi';
-                       if (!is_file($project_hgweb)) {
-                               $lines = file($hgweb);
-                               $repo_config = "";
-                               foreach ($lines as $line) {
-                                       if (preg_match("/\Aapplication = 
hgweb/",$line)) {
-                                               //link per project hgweb.cgi to 
the project repository
-                                               $repo_config .= "application = 
hgweb(\"".$repo."\",\"".$project->getUnixName()."\")\n";
-                                       } else {
-                                               $repo_config .= $line;
-                                       }
+               //get template hgweb.cgi
+               $hgweb = 
forge_get_config('source_path').'/plugins/scmhg/cgi-bin/hgweb.cgi';
+               $project_hgweb = 
forge_get_config('source_path').'/www/plugins/scmhg/cgi-bin/'.$project_name.'.cgi';
+               if (!is_file($project_hgweb)) {
+                       $lines = file($hgweb);
+                       $repo_config = "";
+                       foreach ($lines as $line) {
+                               if (preg_match("/\Aapplication = 
hgweb/",$line)) {
+                                       //link per project hgweb.cgi to the 
project repository
+                                       $repo_config .= "application = 
hgweb(\"".$root."\",\"".$project_name."\")\n";
+                               } else {
+                                       $repo_config .= $line;
                                }
-                               $f = fopen($project_hgweb, 'w');
-                               fwrite($f, $repo_config);
-                               fclose($f);
-                               system("chown $unix_user:$unix_group 
$project_hgweb");
-                               system("chmod u+x $project_hgweb");
                        }
-               }
-               if (!is_dir("$repo/.hg")) {
-                       system("hg init $repo");
-                       $f = fopen("$repo/.hg/hgrc",'w');
+                       $f = fopen($project_hgweb, 'w');
+                       fwrite($f, $repo_config);
+                       fclose($f);
+                       $apache_user = forge_get_config('apache_user');
+                       $apache_group = forge_get_config('apache_group');
+                       system("chgrp $apache_user:$apache_group 
$project_hgweb");
+                       system("chmod u+x $project_hgweb");
+               }
+               if (!is_dir("$root/.hg")) {
+                       system("hg init $root");
+                       $f = fopen("$root/.hg/hgrc",'w');
                        $conf = "[web]\n";
                        $conf .= "baseurl = /hg";
-                       $conf .= "\ndescription = ".$project->getUnixName();
+                       $conf .= "\ndescription = ".$project_name;
                        $conf .= "\nstyle = paper";
                        $conf .= "\nallow_push = *"; // every user (see Apache 
configuration) is allowed to push
                        $conf .= "\nallow_read = *"; // every user is allowed 
to clone and pull
@@ -276,36 +331,25 @@ Offer DAV or SSH access.");
                        }
                        fwrite($f, $conf);
                        fclose($f);
-                       system("chgrp -R $unix_group $repo");
-                       system("chmod 770 $repo");
-                       system("find $repo -type d | xargs chmod g+s");
-                       system("chmod 660 $repo/.hg/hgrc");
-               }
-
-               if ($project->enableAnonSCM()) {
-                       system("chmod -R g+wX,o+rX-w $repo");
-               } else {
-                       system("chmod -R g+wX,o-rwx $repo");
+                       //system("chmod 770 $root");
+                       //system("find $root -type d | xargs chmod g+s");
+                       system("chgrp -R $unix_group_rw $root");
+                       system("chmod -R g=rwX,o=rX $root");
+                       system("chmod 660 $root/.hg/hgrc");
                }
        }
 
        function updateRepositoryList($params) {
                $groups = $this->getGroups();
-               if (!forge_get_config('use_dav', 'scmhg')) {
-                       return true;
-               }
-
                $unix_group = forge_get_config('apache_group');
                $unix_user = forge_get_config('apache_user');
                $password_data = '';
                $hgusers = array();
                foreach ($groups as $project) {
-                       if (!$project->isActive()) {
-                               continue;
-                       }
-                       if (!$project->usesSCM()) {
-                               continue;
-                       }
+                       if (!$project->isActive()) continue;
+                       if (!$project->usesSCM()) continue;
+                       if (!$project->usesPlugin($this->name)) continue;
+
                        $push = "";
                        $read = ""; /*pull,clone*/
                        $path = forge_get_config('repos_path', 
'scmhg').'/'.$project->getUnixName().'/.hg';
@@ -314,10 +358,7 @@ Offer DAV or SSH access.");
                        $users = $project->getMembers();
                        $pname = $project->getUnixName();
                        foreach ($users as $user) {
-                               if (forge_check_perm_for_user ($user,
-                                                       'scm',
-                                                       $project->getID(),
-                                                       'write')) {
+                               if (forge_check_perm_for_user ($user, 'scm', 
$project->getID(), 'write')) {
                                        if ($prevp){
                                                $push .= ", ";
                                        }
@@ -329,10 +370,7 @@ Offer DAV or SSH access.");
                                        $prevp = true;
                                        $prevr = true;
                                        $hgusers[$user->getID()] = $user;
-                               }elseif (forge_check_perm_for_user ($user,
-                                                                       'scm',
-                                                                       
$project->getID(),
-                                                                       
'read')) {
+                               } elseif (forge_check_perm_for_user ($user, 
'scm', $project->getID(), 'read')) {
                                        if ($prevr){
                                                $read .= ", ";
                                        }

https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=982697a0894399b0c91c9dae99a4ba889baf5a9e

commit 982697a0894399b0c91c9dae99a4ba889baf5a9e
Author: Franck Villaume <[email protected]>
Date:   Sun Jan 29 16:47:45 2017 +0100

    scmhg: initial configuration to support online browsing, anonymous clone

diff --git a/src/plugins/scmhg/etc/httpd.conf.d/vhost-scm-plugin-scmhg.inc 
b/src/plugins/scmhg/etc/httpd.conf.d/vhost-scm-plugin-scmhg.inc
new file mode 100644
index 0000000..296dd61
--- /dev/null
+++ b/src/plugins/scmhg/etc/httpd.conf.d/vhost-scm-plugin-scmhg.inc
@@ -0,0 +1,16 @@
+<Directory ${FF__scmhg__repos_path}>
+  Include ${FF__core__config_path}/httpd.conf.d/disable-scripts.inc
+</Directory>
+
+ScriptAlias /plugins/scmhg/cgi-bin/ 
${FF__core__plugins_path}/scmhg/www/cgi-bin/
+AliasMatch ^/authscm/[^/]+/hg/(.*) ${FF__scmhg__repos_path}/$1
+AliasMatch ^/anonscm/[^/]+/hg/(.*) ${FF__scmhg__repos_path}/$1
+
+<Directory ${FF__core__plugins_path}/scmhg/www/cgi-bin >
+       Options +ExecCGI +FollowSymLinks +Multiviews
+       AddHandler cgi-script .cgi
+       RewriteEngine On
+       RewriteRule .* - [E=REMOTE_USER:%{ENV:REDIRECT_REMOTE_USER}]
+       AllowOverride None
+       Require all granted
+</Directory>

https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=8aca00b100aceeb8269050f1bb00763e37ff865a

commit 8aca00b100aceeb8269050f1bb00763e37ff865a
Author: Franck Villaume <[email protected]>
Date:   Sun Jan 29 16:46:38 2017 +0100

    fix install.sh script to support browsing + template format log

diff --git a/src/plugins/scmhg/bin/install.sh b/src/plugins/scmhg/bin/install.sh
index c68ac8e..c457b29 100644
--- a/src/plugins/scmhg/bin/install.sh
+++ b/src/plugins/scmhg/bin/install.sh
@@ -1,21 +1,25 @@
 #!/bin/bash -e
-# hgweb post-install
+# scmhg post-install
 
 source $(forge_get_config source_path)/post-install.d/common/service.inc
 
 plugindir=$(forge_get_config plugins_path)/scmhg
 hgwebcgi=$(ls /usr/share/doc/mercurial-*/hgweb.cgi 2>/dev/null | tail -1)
 hgwebdir=$(ls -d /usr/share/doc/mercurial-* 2>/dev/null | tail -1)
+hgtemplatesdir=$(ls -d /usr/lib*/python*/site-packages/mercurial/templates 
2>/dev/null | tail -1)
 
 case "$1" in
     configure)
        # hgweb
-       if [ -z "$hgwebcgi" -o -z "$hgwebdir" ]; then echo "Cannot find 
gitweb"; exit 1; fi
+       if [ -z "$hgwebcgi" -o -z "$hgwebdir" ]; then echo "Cannot find hgweb"; 
exit 1; fi
        mkdir -p -m 755 $plugindir/cgi-bin/
+       mkdir -p -m 755 $plugindir/www/cgi-bin/
        ln -nfs $hgwebcgi                 $plugindir/cgi-bin/
+       ln -nfs $plugindir/etc/fflog.tmpl $hgtemplatesdir
        ;;
     remove)
        rm -rf $plugindir/cgi-bin/
+       rm -rf $hgtemplatesdir/fflog.tmpl
        find $plugindir/www/ -type l -print0 | xargs -r0 rm
        ;;
     *)

https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=2aaffcfc303d7ad513eba279314fe5cf6082e988

commit 2aaffcfc303d7ad513eba279314fe5cf6082e988
Author: Franck Villaume <[email protected]>
Date:   Sun Jan 29 16:33:36 2017 +0100

    scmgit: minor HTML fix

diff --git a/src/plugins/scmgit/common/GitPlugin.class.php 
b/src/plugins/scmgit/common/GitPlugin.class.php
index 3302114..b7a4c66 100644
--- a/src/plugins/scmgit/common/GitPlugin.class.php
+++ b/src/plugins/scmgit/common/GitPlugin.class.php
@@ -191,7 +191,7 @@ control over it to the project's administrator.");
                                $b .= html_e('p', array(), _('SSH must be 
installed on your client machine.'));
                                $htmlRepo = '';
                                foreach ($repo_list as $repo_name) {
-                                               $htmlRepo .= html_e('tt', 
array(), 'git clone git+ssh://'.$d.'@' . forge_get_config('scm_host') . 
forge_get_config('repos_path', 'scmgit') .'/'. $project->getUnixName() .'/'. 
$repo_name .'.git').html_e('br');
+                                       $htmlRepo .= html_e('tt', array(), 'git 
clone git+ssh://'.$d.'@' . forge_get_config('scm_host') . 
forge_get_config('repos_path', 'scmgit') .'/'. $project->getUnixName() .'/'. 
$repo_name .'.git').html_e('br');
                                }
                                $b .= html_e('p', array(), $htmlRepo);
                                $b .= '</div>';
@@ -200,10 +200,9 @@ control over it to the project's administrator.");
                                $b .= '<div id="tabber-smarthttp" 
class="tabbertab" >';
                                $b .= html_e('p', array(), _('Enter your site 
password when prompted.'));
                                $htmlRepo = '';
-
                                $protocol = forge_get_config('use_ssl', 
'scmgit') ? 'https' : 'http';
                                foreach ($repo_list as $repo_name) {
-                                       $htmlRepo .= '<tt>git clone 
'.$protocol.'://'.$d.'@' . 
forge_get_config('scm_host').'/authscm/'.$d.'/git/'.$project->getUnixName() 
.'/'. $repo_name .'.git</tt><br />';
+                                       $htmlRepo .= html_e('tt', array(), 'git 
clone '.$protocol.'://'.$d.'@' . 
forge_get_config('scm_host').'/authscm/'.$d.'/git/'.$project->getUnixName() 
.'/'. $repo_name .'.git').html_e('br');
                                }
                                $b .= html_e('p', array(), $htmlRepo);
                                $b .= '</div>';
@@ -234,7 +233,7 @@ control over it to the project's administrator.");
                                        ' '. _('Enter your site password when 
prompted.'));
                                $htmlRepo = '';
                                foreach ($repo_list as $repo_name) {
-                                       $b .= '<tt>git clone 
'.$protocol.'://<i>'._('developername').'</i>@' . 
forge_get_config('scm_host').'/authscm/<i>'._('developername').'</i>/git/'.$project->getUnixName()
 .'/'. $repo_name .'.git</tt><br />';
+                                       $htmlRepo .= '<tt>git clone 
'.$protocol.'://<i>'._('developername').'</i>@' . 
forge_get_config('scm_host').'/authscm/<i>'._('developername').'</i>/git/'.$project->getUnixName()
 .'/'. $repo_name .'.git</tt><br />';
                                }
                                $b .= html_e('p', array(), $htmlRepo);
                                $b .= '</div>';

https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=851f8d50aa0bb8d4fef79502aa069ef520688a65

commit 851f8d50aa0bb8d4fef79502aa069ef520688a65
Author: Franck Villaume <[email protected]>
Date:   Sun Jan 29 16:30:28 2017 +0100

    scmhg: use general configuration for ssl

diff --git a/src/plugins/scmhg/etc/scmhg.ini b/src/plugins/scmhg/etc/scmhg.ini
index 8acf068..2e175e1 100644
--- a/src/plugins/scmhg/etc/scmhg.ini
+++ b/src/plugins/scmhg/etc/scmhg.ini
@@ -7,7 +7,7 @@
 ; is available in installation_environment = development only.
 plugin_status = valid
 
-use_ssl = no
+use_ssl = "$core/use_ssl"
 use_ssh = yes
 use_dav = yes
 anonhg_login = guest

https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=57032afc22892d72660cd5cdfad7aab1d5a3da79

commit 57032afc22892d72660cd5cdfad7aab1d5a3da79
Author: Franck Villaume <[email protected]>
Date:   Sat Jan 28 14:43:05 2017 +0100

    scmhg plugin: add missing post install.sh configuration script

diff --git a/src/plugins/scmhg/bin/install.sh b/src/plugins/scmhg/bin/install.sh
new file mode 100644
index 0000000..c68ac8e
--- /dev/null
+++ b/src/plugins/scmhg/bin/install.sh
@@ -0,0 +1,24 @@
+#!/bin/bash -e
+# hgweb post-install
+
+source $(forge_get_config source_path)/post-install.d/common/service.inc
+
+plugindir=$(forge_get_config plugins_path)/scmhg
+hgwebcgi=$(ls /usr/share/doc/mercurial-*/hgweb.cgi 2>/dev/null | tail -1)
+hgwebdir=$(ls -d /usr/share/doc/mercurial-* 2>/dev/null | tail -1)
+
+case "$1" in
+    configure)
+       # hgweb
+       if [ -z "$hgwebcgi" -o -z "$hgwebdir" ]; then echo "Cannot find 
gitweb"; exit 1; fi
+       mkdir -p -m 755 $plugindir/cgi-bin/
+       ln -nfs $hgwebcgi                 $plugindir/cgi-bin/
+       ;;
+    remove)
+       rm -rf $plugindir/cgi-bin/
+       find $plugindir/www/ -type l -print0 | xargs -r0 rm
+       ;;
+    *)
+        echo "Usage: $0 {configure|remove}"
+        exit 1
+esac

-----------------------------------------------------------------------

Summary of changes:
 src/plugins/scmgit/common/GitPlugin.class.php      |   7 +-
 src/plugins/scmhg/bin/install.sh                   |  28 ++
 src/plugins/scmhg/common/HgPlugin.class.php        | 548 +++++++++++----------
 .../etc/httpd.conf.d/vhost-scm-plugin-scmhg.inc    |  16 +
 src/plugins/scmhg/etc/scmhg.ini                    |   2 +-
 5 files changed, 341 insertions(+), 260 deletions(-)
 create mode 100644 src/plugins/scmhg/bin/install.sh
 create mode 100644 
src/plugins/scmhg/etc/httpd.conf.d/vhost-scm-plugin-scmhg.inc


hooks/post-receive
-- 
FusionForge

_______________________________________________
Fusionforge-commits mailing list
[email protected]
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits

Reply via email to