X-Git-Url: http://git.pjr.cc/?a=blobdiff_plain;f=gwvpmini%2Fgwvpmini_gitrepo.php;h=ba00862d35d8c78fb66703522482ed2264acfb40;hb=90c1b8ddcf48b3f13f143954a81f231591955915;hp=edf8fd692f287a43ea1b27402f577ce97c40dd7f;hpb=eaa989c5b3d6534276be3c32e089d4ec2b45e395;p=gwvp-mini.git
diff --git a/gwvpmini/gwvpmini_gitrepo.php b/gwvpmini/gwvpmini_gitrepo.php
index edf8fd6..ba00862 100644
--- a/gwvpmini/gwvpmini_gitrepo.php
+++ b/gwvpmini/gwvpmini_gitrepo.php
@@ -3,7 +3,7 @@ global $HOME_PAGE_PROVIDERS;
$CALL_ME_FUNCTIONS["repoadmin"] = "gwvpmini_RepoCallMe";
-$HOME_PAGE_PROVIDERS["gitlog"] = "gwvpmini_GitLogProvider";
+$HOME_PAGE_PROVIDERS["00gitlog"] = "gwvpmini_GitLogProvider";
// the home_page_provders bit is an array
@@ -63,6 +63,9 @@ function gwvpmini_RepoMainPageBody()
foreach($repos as $repo) {
$name = $repo["name"];
$desc = $repo["desc"];
+
+ 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");
@@ -169,15 +174,6 @@ function gwvpmini_GitLogProvider()
echo "";
}
}
-
- $logs = gwvpmini_GetActivityLog();
- if($logs !== null) {
- echo "Global Log";
- foreach($logs as $ents) {
- echo "".$ents["type"]." | ".$ents["commitid"]." | ";
- }
- echo " ";
- }
}
function gwvpmini_GitCreateRepoForm()
@@ -187,15 +183,15 @@ function gwvpmini_GitCreateRepoForm()
echo "";
@@ -209,6 +205,7 @@ function gwvpmini_RepoCreate()
// TODO: check the stuff out
// first reponame
$inputcheck = true;
+
// remove a .git at the end if it was input
$_REQUEST["reponame"] = preg_replace("/\.git$/", "", $_REQUEST["reponame"]);
@@ -220,6 +217,47 @@ function gwvpmini_RepoCreate()
$inputcheckerror = "Repo name contains invalid characters, repos can only contain a-z, A-Z, 0-9, _, - and .";
}
+ $clonefrom = false;
+ $fromremote = false;
+ if(isset($_REQUEST["clonefrom"])) {
+ if($_REQUEST["clonefrom"] != "") {
+ $clonefrom = $_REQUEST["clonefrom"];
+ if(preg_match("/git.*:\/\/.*/", $clonefrom)>0) {
+ $fromremote = true;
+ }
+ if(preg_match("/http.*\:\/\//", $clonefrom)>0) $fromremote = true;
+ }
+ }
+
+ 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 (or you cant read it)");
+ header("Location: $BASE_URL/repos");
+ return;
+ }
+
+ // resolve repo permissions on the read/clone
+ if(gwvpmini_GetRepoPerm($rn, $uid) < 1) {
+ gwvpmini_SendMessage("error", "local repo $clonefrom given as upstream clone, however $clonefrom doesnt exist on this site (or you cant read it)");
+ 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");
@@ -229,7 +267,7 @@ 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"]);
+ 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");
}
@@ -281,5 +319,12 @@ function gwvpmini_RecursiveDelete($fpath)
return @rmdir($fpath);
}
}
+
+function gwvpmini_CompressCommitId($cid)
+{
+ $compressedcid = substr($cid, 0, 5)."...".substr($cid, strlen($cid)-5, strlen($cid));
+
+ return $compressedcid;
+}
?>
\ No newline at end of file
|