commit 465050f2ef885a2bc9ee66635c9eafbd3c66c148
parent 293e00857a1605229efa888988392d1c16f67e63
Author: maydayv7 <maydayv7@gmail.com>
Date: Fri, 2 Jan 2026 01:16:45 +0530
feat: Fork repo
Diffstat:
6 files changed, 4 insertions(+), 327 deletions(-)
diff --git a/LICENSE b/LICENSE
@@ -1,21 +0,0 @@
-MIT/X Consortium License
-
-(c) 2015-2024 Hiltjo Posthuma <hiltjo@codemadness.org>
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/README b/README
@@ -1,186 +0,0 @@
-stagit
-------
-
-static git page generator.
-
-It generates static HTML pages for a git repository.
-
-
-Usage
------
-
-Make files per repository:
-
- $ mkdir -p htmlroot/htmlrepo1 && cd htmlroot/htmlrepo1
- $ stagit path/to/gitrepo1
- repeat for other repositories
- $ ...
-
-Make index file for repositories:
-
- $ cd htmlroot
- $ stagit-index path/to/gitrepo1 \
- path/to/gitrepo2 \
- path/to/gitrepo3 > index.html
-
-
-Build and install
------------------
-
-$ make
-# make install
-
-
-Dependencies
-------------
-
-- C compiler (C99).
-- libc (tested with OpenBSD, FreeBSD, NetBSD, Linux: glibc and musl).
-- libgit2 (v0.22+).
-- POSIX make (optional).
-
-
-Documentation
--------------
-
-See man pages: stagit(1) and stagit-index(1).
-
-
-Building a static binary
-------------------------
-
-It may be useful to build static binaries, for example to run in a chroot.
-
-It can be done like this at the time of writing (v0.24):
-
-cd libgit2-src
-
-# change the options in the CMake file: CMakeLists.txt
-BUILD_SHARED_LIBS to OFF (static)
-CURL to OFF (not needed)
-USE_SSH OFF (not needed)
-THREADSAFE OFF (not needed)
-USE_OPENSSL OFF (not needed, use builtin)
-
-mkdir -p build && cd build
-cmake ../
-make
-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
-------------------------
-
-Using a post-receive hook the static files can be automatically updated.
-Keep in mind git push -f can change the history and the commits may need
-to be 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
-------------------------------
- #!/bin/sh
- name="stagit"
- mkdir -p archives
- git tag -l | while read -r t; do
- f="archives/${name}-$(echo "${t}" | tr '/' '_').tar.gz"
- test -f "${f}" && continue
- git archive \
- --format tar.gz \
- --prefix "${t}/" \
- -o "${f}" \
- -- \
- "${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, like:
- - Snapshot tarballs per commit.
- - File tree per commit.
- - History log of branches diverged from HEAD.
- - Stats (git shortlog -s).
-
- This is by design, just use git locally.
diff --git a/example_create.sh b/example_create.sh
@@ -1,43 +0,0 @@
-#!/bin/sh
-# - Makes index for repositories in a single directory.
-# - Makes static pages for each repository directory.
-#
-# NOTE, things to do manually (once) before running this script:
-# - copy style.css, logo.png and favicon.png manually, a style.css example
-# is included.
-#
-# - write clone URL, for example "git://git.codemadness.org/dir" to the "url"
-# file for each repo.
-# - write owner of repo to the "owner" file.
-# - write description in "description" file.
-#
-# Usage:
-# - mkdir -p htmldir && cd htmldir
-# - sh example_create.sh
-
-# path must be absolute.
-reposdir="/var/www/domains/git.codemadness.nl/home/src"
-curdir="$(pwd)"
-
-# make index.
-stagit-index "${reposdir}/"*/ > "${curdir}/index.html"
-
-# make files per repo.
-for dir in "${reposdir}/"*/; do
- # strip .git suffix.
- r=$(basename "${dir}")
- d=$(basename "${dir}" ".git")
- printf "%s... " "${d}"
-
- mkdir -p "${curdir}/${d}"
- cd "${curdir}/${d}" || continue
- stagit -c ".cache" -u "https://git.codemadness.nl/$d/" "${reposdir}/${r}"
-
- # symlinks
- ln -sf log.html index.html
- ln -sf ../style.css style.css
- ln -sf ../logo.png logo.png
- ln -sf ../favicon.png favicon.png
-
- echo "done"
-done
diff --git a/example_post-receive.sh b/example_post-receive.sh
@@ -1,73 +0,0 @@
-#!/bin/sh
-# generic git post-receive hook.
-# change the config options below and call this script in your post-receive
-# hook or symlink it.
-#
-# usage: $0 [name]
-#
-# if name is not set the basename of the current directory is used,
-# this is the directory of the repo when called from the post-receive script.
-
-# NOTE: needs to be set for correct locale (expects UTF-8) otherwise the
-# default is LC_CTYPE="POSIX".
-export LC_CTYPE="en_US.UTF-8"
-
-name="$1"
-if test "${name}" = ""; then
- name=$(basename "$(pwd)")
-fi
-
-# config
-# paths must be absolute.
-reposdir="/home/src/src"
-dir="${reposdir}/${name}"
-htmldir="/home/www/domains/git.codemadness.org/htdocs"
-stagitdir="/"
-destdir="${htmldir}${stagitdir}"
-cachefile=".htmlcache"
-# /config
-
-if ! test -d "${dir}"; then
- echo "${dir} does not exist" >&2
- exit 1
-fi
-cd "${dir}" || exit 1
-
-# detect git push -f
-force=0
-while read -r old new ref; do
- test "${old}" = "0000000000000000000000000000000000000000" && continue
- test "${new}" = "0000000000000000000000000000000000000000" && continue
-
- hasrevs=$(git rev-list "${old}" "^${new}" | sed 1q)
- if test -n "${hasrevs}"; then
- force=1
- break
- fi
-done
-
-# strip .git suffix.
-r=$(basename "${name}")
-d=$(basename "${name}" ".git")
-printf "[%s] stagit HTML pages... " "${d}"
-
-mkdir -p "${destdir}/${d}"
-cd "${destdir}/${d}" || exit 1
-
-# remove commits and ${cachefile} on git push -f, this recreated later on.
-if test "${force}" = "1"; then
- rm -f "${cachefile}"
- rm -rf "commit"
-fi
-
-# make index.
-stagit-index "${reposdir}/"*/ > "${destdir}/index.html"
-
-# make pages.
-stagit -c "${cachefile}" -u "https://git.codemadness.nl/$d/" "${reposdir}/${r}"
-
-ln -sf log.html index.html
-ln -sf ../style.css style.css
-ln -sf ../logo.png logo.png
-
-echo "done"
diff --git a/stagit-index.1 b/stagit-index.1
@@ -44,4 +44,4 @@ stagit-index path/to/gitrepo1 path/to/gitrepo2 > index.html
.Sh SEE ALSO
.Xr stagit 1
.Sh AUTHORS
-.An Hiltjo Posthuma Aq Mt hiltjo@codemadness.org
+.An V7
diff --git a/stagit.1 b/stagit.1
@@ -34,7 +34,7 @@ to the log.html file only.
However the commit files are written as usual.
.It Fl u Ar baseurl
Base URL to make links in the Atom feeds absolute.
-For example: "https://git.codemadness.org/stagit/".
+For example: "https://github.com/maydayv7/stagit/".
.El
.Pp
The options
@@ -93,7 +93,7 @@ description
owner of repository
.It .git/url or url (bare repo).
primary clone URL of the repository, for example:
-git://git.codemadness.org/stagit
+https://github.com/maydayv7/stagit
.El
.Pp
When a README or LICENSE file exists in HEAD or a .gitmodules submodules file
@@ -122,4 +122,4 @@ can be used, see the file example_post-receive.sh for an example.
.Sh SEE ALSO
.Xr stagit-index 1
.Sh AUTHORS
-.An Hiltjo Posthuma Aq Mt hiltjo@codemadness.org
+.An V7