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