if(gwvpmini_isLoggedIn()) {
$repos = gwvpmini_GetOwnedRepos($_SESSION["username"]);
+ error_log("repos, ".print_r($repos, true));
if(!$repos) {
echo "You currently own no repos<br>";
} else {
foreach($repos as $repo) {
$name = $repo["name"];
$desc = $repo["desc"];
+ $stat = $repo["status"];
+ $llog = "";\r
+ if($stat != 0) {\r
+ switch($stat) {\r
+ case 1:\r
+ $llog = "Repo Administratively Disabled";\r
+ break;\r
+ case 2:\r
+ $llog = "Repo Cloning from remote";\r
+ break;\r
+ }\r
+ } else {
- if($desc == "") $desc = "none";
-
- $repo_base = gwvpmini_getConfigVal("repodir");
- $cmd = "git --git-dir=\"$repo_base/$name.git\" log --all -1 2> /dev/null";
- echo "<tr><td><a href=\"$BASE_URL/view/$name\">$name</a></td><td>$desc</td>";
- echo "<td>";\r
- // error_log("CMD: $cmd");
- //system("$cmd");
- $fls = popen($cmd, "r");
- $tks = "";
- if($fls !== false) while(!feof($fls)) {
- $tks .= fread($fls,1024);
+ if($desc == "") $desc = "none";
+
+ $repo_base = gwvpmini_getConfigVal("repodir");
+ $cmd = "git --git-dir=\"$repo_base/$name.git\" log --all -1 2> /dev/null";
+ // error_log("CMD: $cmd");
+ //system("$cmd");
+ $fls = popen($cmd, "r");
+ $tks = "";
+ if($fls !== false) while(!feof($fls)) {
+ $tks .= fread($fls,1024);
+ }
+
+ if($tks == "") {
+ $llog = "No Log Info Yet";
+ } else $llog = $tks;
+
}
-
- if($tks == "") {
- echo "No Log Info Yet";
- } else echo $tks;
- echo "</td>";
- echo "</tr>";
+ echo "<tr><td><a href=\"$BASE_URL/view/$name\">$name</a></td><td>$desc</td><td>$llog</td></tr>";
}
echo "</table>";
}
foreach($contreps as $repo) {
$name = $repo["name"];\r
$desc = $repo["desc"];
- $repo_base = gwvpmini_getConfigVal("repodir");\r
- $cmd = "git --git-dir=\"$repo_base/$name.git\" log --all -1 2> /dev/null";
- // error_log("CMD: $cmd");
- //system("$cmd");
- $fls = popen($cmd, "r");
- $tks = "";
- if($fls !== false) while(!feof($fls)) {
- $tks .= fread($fls,1024);
+ $stat = $repo["status"];
+ if($stat != 0) {
+ switch($stat) {
+ case 1:
+ $lastlog = "Repo Administratively Disabled";
+ break;
+ case 2:
+ $lastlog = "Repo Cloning from remote";
+ break;
+ }
+ } else {
+ $repo_base = gwvpmini_getConfigVal("repodir");\r
+ $cmd = "git --git-dir=\"$repo_base/$name.git\" log --all -1 2> /dev/null";
+ // error_log("CMD: $cmd");
+ //system("$cmd");
+ $fls = popen($cmd, "r");
+ $tks = "";
+ if($fls !== false) while(!feof($fls)) {
+ $tks .= fread($fls,1024);
+ }
+
+ if($tks == "") {
+ $lastlog = "No Log Info Yet";
+ } else $lastlog = $tks;
}
- if($tks == "") {
- $lastlog = "No Log Info Yet";
- } else $lastlog = $tks;
-
$owner = gwvpmini_getUser(null, null, $repo["owner"]);
$repname = "<a href=\"$BASE_URL/view/$name\">$name</a>";
$repown = gwvpmini_HtmlGravatar($owner["email"], 30, "<br>")."<a href=\"$BASE_URL/user/".$owner["username"]."\">".$owner["username"]."</a>";
function gwvpmini_GitLogProvider()\r
-{\r
+{
+ global $cmd_line_tool,$git_cli_cmd,$php_cli_cmd;\r
/*\r
* The home page provider will:\r
* 1) show the last 10 commits for every repository - though, excluding private repos\r
echo "<tr><td><a href=\"$BASE_URL/view/$name\">$name</a></td><td>$desc</td>";
echo "<td>";
$repo_base = gwvpmini_getConfigVal("repodir");
- $cmd = "git --git-dir=\"$repo_base/$name.git\" log --all -1 2> /dev/null";
+ $cmd = "$git_cli_cmd --git-dir=\"$repo_base/$name.git\" log --all -1 2> /dev/null";
// error_log("CMD: $cmd");
//system("$cmd");
$fls = popen($cmd, "r");
if($clonefrom !== false && $fromremote == false) {
// check the local repo exists
$rn = gwvpmini_getRepo(null, $clonefrom, null);
+ $uid = $_SESSION["id"];
+
if($rn == false) {
- gwvpmini_SendMessage("error", "local repo $clonefrom given as upstream clone, however $clonefrom doesnt exist on this site");
+ gwvpmini_SendMessage("error", "local repo $clonefrom given as upstream clone, however $clonefrom doesnt exist on this site (or you cant read it unbake)");
+ header("Location: $BASE_URL/repos");
+ return;
+ }
+
+ // resolve repo permissions on the read/clone
+ if(gwvpmini_GetRepoPerm($rn["id"], $uid) < 1) {
+ gwvpmini_SendMessage("error", "local repo $clonefrom given as upstream clone, however $clonefrom doesnt exist on this site (or you cant read it bake)");
header("Location: $BASE_URL/repos");
return;
}
}
+ $defperms = "a";
+ switch($_REQUEST["perms"]) {
+ case "perms-registered":
+ $defperms = "r";
+ break;
+ case "perms-onlywrite":
+ $defperms = "x";
+ break;
+ }
+
if(!$inputcheck) {
gwvpmini_SendMessage("error", "$inputcheckerror");\r
header("Location: $BASE_URL/repos");
gwvpmini_SendMessage("error", "Repo ".$_REQUEST["reponame"]." already exists");\r
header("Location: $BASE_URL/repos");
} else {
- gwvpmini_createGitRepo($_REQUEST["reponame"], $_SESSION["id"], $_REQUEST["repodesc"], $_REQUEST["perms"], $clonefrom);
- gwvpmini_SendMessage("info", "Repo ".$_REQUEST["reponame"]." has been created");
+ if(gwvpmini_createGitRepo($_REQUEST["reponame"], $_SESSION["id"], $_REQUEST["repodesc"], $defperms, $clonefrom, $fromremote)) {
+ gwvpmini_SendMessage("info", "Repo ".$_REQUEST["reponame"]." has been created");
+ }
header("Location: $BASE_URL/repos");
}
} else {
return $compressedcid;
}
+
+function gwvpmini_GetCommitDetail($repo, $commitid)
+{
+ global $cmd_line_tool,$git_cli_cmd,$php_cli_cmd;
+
+ $repo_base = gwvpmini_getConfigVal("repodir");
+
+ $cmd = "$git_cli_cmd --git-dir=$repo_base/$repo.git log $commitid -1 --format='%an'";
+ exec($cmd, $commitername, $returnvar);
+
+ $cmd = "$git_cli_cmd --git-dir=$repo_base/$repo.git log $commitid -1 --format='%ae'";
+ exec($cmd, $commiteremail, $returnvar);
+
+ $cmd = "$git_cli_cmd --git-dir=$repo_base/$repo.git log $commitid -1 --format='%ct'";
+ exec($cmd, $commitertime, $returnvar);
+
+ $cmd = "$git_cli_cmd --git-dir=$repo_base/$repo.git log $commitid -1 --format='%s'";
+ exec($cmd, $commiterlog, $returnvar);
+
+ $cmd = "$git_cli_cmd --git-dir=$repo_base/$repo.git log $commitid -1 --format='%b'";
+ exec($cmd, $commiterbody, $returnvar);
+}
+
+function gwvpmini_GetCommitList($repo, $branch, $num=20)
+{
+ global $git_cli_cmd,$git_cli_cmd,$php_cli_cmd;
+
+ $repo_base = gwvpmini_getConfigVal("repodir");
+
+ $cmd = "$git_cli_cmd --git-dir=$repo_base/$repo.git log $commitid -1 --format='%an'";\r
+ exec($cmd, $commitername, $returnvar);\r
+
+}
+
+function gwvpmini_GetRefList($repo)
+{
+ global $cmd_line_tool,$git_cli_cmd,$php_cli_cmd;
+
+ $repo_base = gwvpmini_getConfigVal("repodir");
+
+ $cmd = "$git_cli_cmd --git-dir=$repo_base/$repo.git for-each-ref $commitid --format='%(objecttype):%(objectname):%(refname)'";
+ error_log("command was $cmd");
+ exec($cmd, $reflist, $returnvar);
+
+ return $reflist;
+}
?>
\ No newline at end of file