commit aac2476448d8f48e614080c71e3e8b69bbc1d07a
parent c22fd724e163a5b5508008534541428eba66342d
Author: Leah (ctucx) <leah@ctu.cx>
Date: Sat, 28 May 2022 12:15:48 +0200
parent c22fd724e163a5b5508008534541428eba66342d
Author: Leah (ctucx) <leah@ctu.cx>
Date: Sat, 28 May 2022 12:15:48 +0200
update README.md
1 file changed, 54 insertions(+), 101 deletions(-)
diff --git a/README.md b/README.md @@ -10,6 +10,60 @@ adds a new dependency. On top of that, the assets have been changed, creating a personal theme. The scripts have also been changed to fit my needs. +Features +-------- + +- Log of all commits from HEAD. +- Log and diffstat per commit. +- Show file tree with linkable line numbers. +- Show references: local branches and tags. +- Detect README and LICENSE file from HEAD and link it as a webpage. +- Detect submodules (.gitmodules file) from HEAD and link it as a webpage. +- Atom feed of the commit log (atom.xml). +- Atom feed of the tags/refs (tags.xml). +- Make index page for multiple repositories with stagit-index. +- After generating the pages (relatively slow) serving the files is very fast, + simple and requires little resources (because the content is static), only a + HTTP file server is required. +- Usable with text-browsers such as dillo, links, lynx and w3m. + + +Cons +---- + +- Not suitable for large repositories (2000+ commits), because diffstats are + an expensive operation, the cache (-c flag) is a workaround for this in some + cases. +- Not suitable for large repositories with many files, because all files are + written for each execution of stagit. This is because stagit shows the lines + of textfiles and there is no "cache" for file metadata (this would add more + complexity to the code). +- Not suitable for repositories with many branches, a quite linear history is + assumed (from HEAD). + + In these cases it is better to just use cgit or possibly change stagit to run + as a CGI program. + +- Relatively slow to run the first time (about 3 seconds for sbase, 1500+ + commits), incremental updates are faster. +- Does not support some of the dynamic features cgit has (this is by design, + just use git locally), like: + - Snapshot tarballs per commit. + - File tree per commit. + - History log of branches diverged from HEAD. + - Stats (git shortlog -s). + + +Dependencies +------------ + +- C compiler (C99). +- libc (tested with OpenBSD, FreeBSD, NetBSD, Linux: glibc and musl). +- libgit2 (v0.22+). +- POSIX make (optional). +- [md4c](https://github.com/mity/md4c) (v0.4.4+). + + Usage ----- @@ -35,16 +89,6 @@ Build and install # make install -Dependencies ------------- - -- C compiler (C99). -- libc (tested with OpenBSD, FreeBSD, NetBSD, Linux: glibc and musl). -- libgit2 (v0.22+). -- POSIX make (optional). -- [md4c](https://github.com/mity/md4c) (v0.4.4+). - - Documentation ------------- @@ -73,33 +117,6 @@ It can be done like this at the time of writing (v0.24): make install -Extract owner field from git config ------------------------------------ - -A way to extract the gitweb owner for example in the format: - - [gitweb] - owner = Name here - -Script: - - #!/bin/sh - awk '/^[ ]*owner[ ]=/ { - sub(/^[^=]*=[ ]*/, ""); - print $0; - }' - - -Set clone URL for a directory of repos --------------------------------------- - - #!/bin/sh - cd "$dir" - for i in *; do - test -d "$i" && echo "git://git.codemadness.org/$i" > "$i/url" - done - - Update files on git push ------------------------ @@ -109,26 +126,6 @@ recreated. This is because stagit checks if a commit file already exists. It also has a cache (-c) option which can conflict with the new history. See stagit(1). -git post-receive hook (repo/.git/hooks/post-receive): - - #!/bin/sh - # detect git push -f - force=0 - while read -r old new ref; do - hasrevs=$(git rev-list "$old" "^$new" | sed 1q) - if test -n "$hasrevs"; then - force=1 - break - fi - done - - # remove commits and .cache on git push -f - #if test "$force" = "1"; then - # ... - #fi - - # see example_create.sh for normal creation of the files. - Create .tar.gz archives by tag ------------------------------ @@ -146,47 +143,3 @@ Create .tar.gz archives by tag -- \ "${t}" done - - -Features --------- - -- Log of all commits from HEAD. -- Log and diffstat per commit. -- Show file tree with linkable line numbers. -- Show references: local branches and tags. -- Detect README and LICENSE file from HEAD and link it as a webpage. -- Detect submodules (.gitmodules file) from HEAD and link it as a webpage. -- Atom feed of the commit log (atom.xml). -- Atom feed of the tags/refs (tags.xml). -- Make index page for multiple repositories with stagit-index. -- After generating the pages (relatively slow) serving the files is very fast, - simple and requires little resources (because the content is static), only a - HTTP file server is required. -- Usable with text-browsers such as dillo, links, lynx and w3m. - - -Cons ----- - -- Not suitable for large repositories (2000+ commits), because diffstats are - an expensive operation, the cache (-c flag) is a workaround for this in some - cases. -- Not suitable for large repositories with many files, because all files are - written for each execution of stagit. This is because stagit shows the lines - of textfiles and there is no "cache" for file metadata (this would add more - complexity to the code). -- Not suitable for repositories with many branches, a quite linear history is - assumed (from HEAD). - - In these cases it is better to just use cgit or possibly change stagit to run - as a CGI program. - -- Relatively slow to run the first time (about 3 seconds for sbase, 1500+ - commits), incremental updates are faster. -- Does not support some of the dynamic features cgit has (this is by design, - just use git locally), like: - - Snapshot tarballs per commit. - - File tree per commit. - - History log of branches diverged from HEAD. - - Stats (git shortlog -s).