<?php
rg_log("/inc/repo/repo_page");
$repo_id = rg_var_uint("repo_id");
$name = rg_var_str("name");
$max_commit_size = rg_var_uint("max_commit_size");
$description = rg_var_str("description");
$rights = @rg_rights_a2s($_REQUEST['rights']);
$max_users = rg_var_uint("max_users");
$user = rg_var_str("user");
$master_repo_id = 0;
// menu
$_url = rg_re_repopage($repo_id, $name);
$_menu = "";
$_menu .= "[<a href=\"$_url&subop=1\">Edit</a>]";
$_menu .= " [<a href=\"$_url&subop=2\">Rights</a>]";
$_menu .= " [<a href=\"$_url&subop=3\">Delete</a>]";
$_menu .= "<br />\n";
$_menu .= "<br />\n";
$_body = "";
$repo_ok = rg_repo_ok($name);
if ($repo_ok === TRUE) {
$ri = rg_repo_info($db, $repo_id, $name);
if (($ri['ok'] != 1) || ($ri['exists'] != 1) || ($ri['deleted'] == 1))
$repo_ok = FALSE;
}
if ($repo_ok !== TRUE) {
$_repo = "Invalid repository!";
return;
}
// we need it in forms
$repo_id = $ri['repo_id'];
$show_repo_info = 1;
$errmsg = array();
switch ($subop) {
case 1: // edit
if ($doit == 1) {
while (1) {
if (rg_repo_allow($db, $ri, $rg_ui, "A") === FALSE) {
$_body .= "Not allowed!<br />\n";
break;
}
$ri['name'] = $name; // TODO: filter name!
$ri['max_commit_size'] = $max_commit_size;
$ri['description'] = $description; // TODO: filter
$ri['default_rights'] = $rights; // TODO: filter
$ri['max_users'] = $max_users;
$_r = rg_repo_update($db, $ri);
if ($_r === FALSE) {
$_body .= rg_repo_error();
break;
}
$_body .= "OK!";
break;
}
} else {
// load variables
$name = $ri['name'];
$rights = $ri['default_rights'];
$max_commit_size = $ri['max_commit_size'];
$max_users = $ri['max_users'];
$description = $ri['description'];
$_action = "Update";
include($INC . "/repo/repo.form.php");
$_body .= $_form;
}
break;
case 2: // rights
$remove_uid = rg_var_uint("remove_uid");
rg_log("\tDEBUG remove_uid=$remove_uid");
if ($remove_uid + $doit > 0) {
if (rg_repo_allow($db, $ri, $rg_ui, "A") === FALSE) {
$errmsg[] = "Not allowed!";
// cancel further checking
$doit = 0;
$remove_uid = 0;
}
}
while ($remove_uid > 0) {
$e = rg_repo_rights_set($db, $ri, $remove_uid, "");
if ($e !== TRUE) {
$errmsg[] = rg_repo_error();
break;
}
break;
}
while ($doit == 1) {
// lookup user
$_ui = rg_user_info($db, 0, $user, "");
if ($_ui['exists'] != 1) {
$errmsg[] = "User <b>$user</b> does not exists!";
break;
}
$e = rg_repo_rights_set($db, $ri, $_ui['uid'], $rights);
if ($e === FALSE) {
$errmsg[] = rg_repo_error();
break;
}
break;
}
// list rights
$_url = rg_re_repopage($ri['repo_id'], $ri['name']);
$_body .= rg_repo_rights_list($db, $ri, $_url);
$_body .= "<br />\n";
include($INC . "/repo/rights.form.php");
$_body .= $_form;
break;
case 3: // delete
while (1) {
if (rg_repo_allow($db, $ri, $rg_ui, "A") === FALSE) {
$errmsg[] = "Not allowed!";
break;
}
$r = rg_repo_delete($db, $repo_id, $rg_ui);
if ($r === FALSE) {
$errmsg[] = "Error: " . rg_repo_error();
break;
}
break;
}
$_err = implode("<br />\n", $errmsg);
if (!empty($_err)) {
$_body .= $_err;
} else {
$_body .= "OK";
$show_repo_info = 0;
}
break;
}
$_rt = "";
if ($show_repo_info == 1) {
$_rt = "Repo <b>" . $ri['name'] . "</b><br />\n";
if (!empty($ri['description']))
$_rt .= "<small>" . $ri['description'] . "</small><br />\n";
$_rt .= "<br />\n";
$_dr = rg_rights_text("repo", $ri['default_rights']);
$_rt .= "Default rights: " . implode(", ", $_dr) . "<br />\n";
$_rt .= "Maxim commit size: " . rg_1024($ri['max_commit_size']) . "<br />\n";
$_rt .= "Maxim number of users: " . $ri['max_users'] . "<br />\n";
$_url = "git://" . $_SERVER['SERVER_NAME'] . "/" . $ri['name'] . ".git";
if (!empty($_dr))
$_rt .= "Git URL: <a href=\"$_url\">$_url</a><br />\n";
$_url = "ssh://rocketgit@" . $_SERVER['SERVER_NAME'] . "/" . $ri['name'] . ".git";
$_rt .= "Git over SSH URL: <a href=\"$_url\">$_url</a><br />\n";
$_rt .= "<br />\n";
}
$_repo = $_menu . $_rt . $_body;
?>
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"
Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/rocketgit
Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/rocketgit
You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a
pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master