grm

git repo manager for self-hosted git servers
git clone git://sink.krj.st/grm
Log | Files | Refs | README | LICENSE

commit 1ca03e6fcecb6075a0fff8f20b40ba3bc2a6e2aa
parent c4711a122ac2187770a07bcfef26806985362343
Author: krasjet <nil@krj.st>
Date:   Fri, 17 Jul 2020 14:15:20 -0700

add plain text readme

Diffstat:
AREADME | 158+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 158 insertions(+), 0 deletions(-)

diff --git a/README b/README @@ -0,0 +1,158 @@ +git repo manager +================ + +grm is a minimal, POSIX-compliant shell script for managing git repositories on +self-hosted git servers. It is mainly designed to work with git daemon [1] and +stagit [2], though you don't necessarily need them to run the script. + +Installation +------------ + +Before installing grm, make sure you have set up your git server following the +instructions in section 4.4 [3] of Pro Git. Optionally, you should also have +git daemon [1] ready for the public access of the repositories, which is +documented in section 4.5 [4] of Pro Git. Your git repositories root should +have the following structure: + + $GRM_REPOS_ROOT + ├── private-repo.git + │   ├── branches + │   ├── HEAD + │   └── ... + ├── public-repo.git + │   ├── branches + │   ├── HEAD + │   ├── ... + │   └── git-daemon-export-ok + └── unlisted-repo.git + ├── branches + ├── HEAD +    ├── ... +    ├── git-daemon-export-ok + └── stagit-no-index + +If you want to have a web interface for your repositories, you should also have +stagit [2] compiled and installed on your server. + +To use git repo manager, edit the grm script to fill in some configurations, + + # root directory of git repositories + GRM_REPOS_ROOT="/home/git" + + # default owner + GRM_OWNER="yourname" + + # default url prefix (without ending slash) + GRM_URL_PREFIX="git://git.domain.tld" + + # path of the post-receive hooks for stagit + GRM_POSTRECV_HOOK="/home/git/.post-receive" + + # root directory of stagit web pages + STAGIT_WEB_ROOT="/srv/git" + +and copy it to $PATH. + +An example of the post-receive hook for stagit can be found here [5]. Note that +the hook itself needs some further configuration. You could also write your own +post-receive hook. + +Usage +----- + + $ grm help + usage: grm <command> [<args>] + + Git repo manager, manage git repositories on self-hosted git servers. + + commands: + new create a new repo + info repo_name display metadata of the repo + ls list all repos + ls public list public repos + ls private list private repos + ls unlisted list unlisted repos + rm repo1 [repo2..] remove repos + rc recompile stagit index + rc repo1 [repo2..] recompile stagit pages for repos, + and recompile index + rca recompile all public repos + help show help + +If you have created a git user for managing git repositories, make sure the git +user has write access to all the directories in the config, and run the script +on the server as: + + $ doas -u git -- grm <command> [<args>] + +or + + $ sudo -u git -- grm <command> [<args>] + +You could also run the script on your local machine using ssh, + + $ ssh git@domain.tld -- grm <command> [<args>] + +or simply create an alias if you find it cumbersome: + + alias grm="ssh git@domain.tld -- grm" + +Examples +-------- + +$ grm new +repo name +> grmr +visibility: + 1) public + 2) private + 3) unlisted (hide from index) +enter index [default: 1] +> 1 +description [a work in progress] +> grm redux +owner [yourname] +> kst +clone url [git://domain.tld/grmr] +> git://git.domain.tld/grmr +Initialized empty Git repository in /home/git/grmr.git/ +writing stagit metadata... +setting visibility... +installing stagit post-receive hook... +done! + +$ grm ls +grm +grmr +$ grm info grmr +name: grmr +visibility: public +description: grm redux +owner: kst +url: git://git.domain.tld/grmr + +$ grm rc grmr +[grmr] recompiling stagit pages... +[index] rebuilding index... +[grmr] done! +[index] done! +recompilation done! + +$ grm rm grmr +remove grmr? [y/N] y +[index] rebuilding index... +[index] done! + +$ grm ls +grm + +License +------- + +grm is licensed under the MIT license. + +[1]: https://git-scm.com/docs/git-daemon +[2]: https://codemadness.org/git/stagit/ +[3]: https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server +[4]: https://git-scm.com/book/en/v2/Git-on-the-Server-Git-Daemon +[5]: https://sink.krj.st/stagit/file/post-receive.html