X-Git-Url: http://git.pjr.cc/?p=gwvp-mini.git;a=blobdiff_plain;f=gwvpmini%2Fgwvpmini_gitrepo.php;h=3c195073cf5a751f9501cc05bc32f1187f435a0f;hp=d642c929f76f2f8e481ac4975156117c395c00cc;hb=HEAD;hpb=64781bdbf8cbe789d349418253ce34efa43ad884
diff --git a/gwvpmini/gwvpmini_gitrepo.php b/gwvpmini/gwvpmini_gitrepo.php
index d642c92..3c19507 100644
--- a/gwvpmini/gwvpmini_gitrepo.php
+++ b/gwvpmini/gwvpmini_gitrepo.php
@@ -55,6 +55,7 @@ function gwvpmini_RepoMainPageBody()
if(gwvpmini_isLoggedIn()) {
$repos = gwvpmini_GetOwnedRepos($_SESSION["username"]);
+ error_log("repos, ".print_r($repos, true));
if(!$repos) {
echo "You currently own no repos
";
} else {
@@ -63,26 +64,37 @@ function gwvpmini_RepoMainPageBody()
foreach($repos as $repo) {
$name = $repo["name"];
$desc = $repo["desc"];
+ $stat = $repo["status"];
+ $llog = "";
+ if($stat != 0) {
+ switch($stat) {
+ case 1:
+ $llog = "Repo Administratively Disabled";
+ break;
+ case 2:
+ $llog = "Repo Cloning from remote";
+ break;
+ }
+ } 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 "
$name | $desc | ";
echo "";
$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");
@@ -232,13 +257,32 @@ function gwvpmini_RepoCreate()
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");
header("Location: $BASE_URL/repos");
@@ -248,8 +292,9 @@ function gwvpmini_RepoCreate()
gwvpmini_SendMessage("error", "Repo ".$_REQUEST["reponame"]." already exists");
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 {
@@ -307,5 +352,51 @@ function gwvpmini_CompressCommitId($cid)
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'";
+ exec($cmd, $commitername, $returnvar);
+
+}
+
+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
|