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"; @@ -148,6 +151,8 @@ function gwvpmini_GitLogProvider() foreach($repos as $repo) { $name = $repo["name"]; $desc = $repo["desc"]; + + if($desc == "") $desc = "-"; 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 ""; - } - echo "
".$ents["type"]."".$ents["commitid"]."
"; - } } function gwvpmini_GitCreateRepoForm() @@ -187,15 +183,15 @@ function gwvpmini_GitCreateRepoForm() echo "
"; echo ""; echo ""; - echo ""; - echo ""; + echo ""; + echo ""; echo ""; + echo ""; + echo ""; echo ""; echo "
Create Repo
Repo Name
Repo Description
Repo NameName of your repo - letters, numbers _ and - only
Repo DescriptionDescription of your repo
Read Permissions"; echo ""; - echo "
The basic permissions for the initial repo creation
Clone FromEither a repo name (existing on this site) or a git url to clone from (blank for none)
"; 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