iREADME - stagit-gopher - A git gopher frontend. (mirror) Err bitreich.org 70 hgit clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ URL:git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ bitreich.org 70 1Log /scm/stagit-gopher/log.gph bitreich.org 70 1Files /scm/stagit-gopher/files.gph bitreich.org 70 1Refs /scm/stagit-gopher/refs.gph bitreich.org 70 1Tags /scm/stagit-gopher/tag bitreich.org 70 1README /scm/stagit-gopher/file/README.gph bitreich.org 70 1LICENSE /scm/stagit-gopher/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 iREADME (4178B) Err bitreich.org 70 i--- Err bitreich.org 70 i 1 stagit-gopher Err bitreich.org 70 i 2 ------------- Err bitreich.org 70 i 3 Err bitreich.org 70 i 4 static git page generator for gopher. Err bitreich.org 70 i 5 Err bitreich.org 70 i 6 This generates pages in the geomyidae .gph file format: Err bitreich.org 70 i 7 Err bitreich.org 70 i 8 http://git.r-36.net/geomyidae Err bitreich.org 70 i 9 Err bitreich.org 70 i 10 Err bitreich.org 70 i 11 Usage Err bitreich.org 70 i 12 ----- Err bitreich.org 70 i 13 Err bitreich.org 70 i 14 Make files per repository: Err bitreich.org 70 i 15 Err bitreich.org 70 i 16 $ mkdir -p gphroot/gphrepo1 && cd gphroot/gphrepo1 Err bitreich.org 70 i 17 $ stagit-gopher path/to/gitrepo1 Err bitreich.org 70 i 18 repeat for other repositories Err bitreich.org 70 i 19 $ ... Err bitreich.org 70 i 20 Err bitreich.org 70 i 21 Make index file for repositories: Err bitreich.org 70 i 22 Err bitreich.org 70 i 23 $ cd gphroot Err bitreich.org 70 i 24 $ stagit-gopher-index path/to/gitrepo1 \ Err bitreich.org 70 i 25 path/to/gitrepo2 \ Err bitreich.org 70 i 26 path/to/gitrepo3 > index.gph Err bitreich.org 70 i 27 Err bitreich.org 70 i 28 Err bitreich.org 70 i 29 Build and install Err bitreich.org 70 i 30 ----------------- Err bitreich.org 70 i 31 Err bitreich.org 70 i 32 $ make Err bitreich.org 70 i 33 # make install Err bitreich.org 70 i 34 Err bitreich.org 70 i 35 Err bitreich.org 70 i 36 Dependencies Err bitreich.org 70 i 37 ------------ Err bitreich.org 70 i 38 Err bitreich.org 70 i 39 - C compiler (C99). Err bitreich.org 70 i 40 - libc (tested with OpenBSD, FreeBSD, NetBSD, Linux: glibc and musl). Err bitreich.org 70 i 41 - libgit2 (v0.22+). Err bitreich.org 70 i 42 - geomyidae (for .gph file serving). Err bitreich.org 70 i 43 - POSIX make (optional). Err bitreich.org 70 i 44 Err bitreich.org 70 i 45 Err bitreich.org 70 i 46 Documentation Err bitreich.org 70 i 47 ------------- Err bitreich.org 70 i 48 Err bitreich.org 70 i 49 See man pages: stagit-gopher(1) and stagit-gopher-index(1). Err bitreich.org 70 i 50 Err bitreich.org 70 i 51 Err bitreich.org 70 i 52 Building a static binary Err bitreich.org 70 i 53 ------------------------ Err bitreich.org 70 i 54 Err bitreich.org 70 i 55 It may be useful to build static binaries, for example to run in a chroot. Err bitreich.org 70 i 56 Err bitreich.org 70 i 57 It can be done like this at the time of writing (v0.24): Err bitreich.org 70 i 58 Err bitreich.org 70 i 59 cd libgit2-src Err bitreich.org 70 i 60 Err bitreich.org 70 i 61 # change the options in the CMake file: CMakeLists.txt Err bitreich.org 70 i 62 BUILD_SHARED_LIBS to OFF (static) Err bitreich.org 70 i 63 CURL to OFF (not needed) Err bitreich.org 70 i 64 USE_SSH OFF (not needed) Err bitreich.org 70 i 65 THREADSAFE OFF (not needed) Err bitreich.org 70 i 66 USE_OPENSSL OFF (not needed, use builtin) Err bitreich.org 70 i 67 Err bitreich.org 70 i 68 mkdir -p build && cd build Err bitreich.org 70 i 69 cmake ../ Err bitreich.org 70 i 70 make Err bitreich.org 70 i 71 make install Err bitreich.org 70 i 72 Err bitreich.org 70 i 73 Err bitreich.org 70 i 74 Set clone URL for a directory of repos Err bitreich.org 70 i 75 -------------------------------------- Err bitreich.org 70 i 76 #!/bin/sh Err bitreich.org 70 i 77 cd "$dir" Err bitreich.org 70 i 78 for i in *; do Err bitreich.org 70 i 79 test -d "$i" && echo "git://git.codemadness.org/$i" > "$i/url" Err bitreich.org 70 i 80 done Err bitreich.org 70 i 81 Err bitreich.org 70 i 82 Err bitreich.org 70 i 83 Update files on git push Err bitreich.org 70 i 84 ------------------------ Err bitreich.org 70 i 85 Err bitreich.org 70 i 86 Using a post-receive hook the static files can be automatically updated. Err bitreich.org 70 i 87 Keep in mind git push -f can change the history and the commits may need Err bitreich.org 70 i 88 to be recreated. This is because stagit checks if a commit file already Err bitreich.org 70 i 89 exists. It also has a cache (-c) option which can conflict with the new Err bitreich.org 70 i 90 history. See stagit(1). Err bitreich.org 70 i 91 Err bitreich.org 70 i 92 git post-receive hook (repo/.git/hooks/post-receive): Err bitreich.org 70 i 93 Err bitreich.org 70 i 94 #!/bin/sh Err bitreich.org 70 i 95 # detect git push -f Err bitreich.org 70 i 96 force=0 Err bitreich.org 70 i 97 while read -r old new ref; do Err bitreich.org 70 i 98 hasrevs=$(git rev-list "$old" "^$new" | sed 1q) Err bitreich.org 70 i 99 if test -n "$hasrevs"; then Err bitreich.org 70 i 100 force=1 Err bitreich.org 70 i 101 break Err bitreich.org 70 i 102 fi Err bitreich.org 70 i 103 done Err bitreich.org 70 i 104 Err bitreich.org 70 i 105 # remove commits and .cache on git push -f Err bitreich.org 70 i 106 #if test "$force" = "1"; then Err bitreich.org 70 i 107 # ... Err bitreich.org 70 i 108 #fi Err bitreich.org 70 i 109 Err bitreich.org 70 i 110 # see example_create.sh for normal creation of the files. Err bitreich.org 70 i 111 Err bitreich.org 70 i 112 Err bitreich.org 70 i 113 Create .tar.gz archives by tag Err bitreich.org 70 i 114 ------------------------------ Err bitreich.org 70 i 115 #!/bin/sh Err bitreich.org 70 i 116 name="stagit-gopher" Err bitreich.org 70 i 117 mkdir -p archives Err bitreich.org 70 i 118 git tag -l | while read -r t; do Err bitreich.org 70 i 119 f="archives/${name}-$(echo "${t}" | tr '/' '_').tar.gz" Err bitreich.org 70 i 120 test -f "${f}" && continue Err bitreich.org 70 i 121 git archive \ Err bitreich.org 70 i 122 --format tar.gz \ Err bitreich.org 70 i 123 --prefix "${t}/" \ Err bitreich.org 70 i 124 -o "${f}" \ Err bitreich.org 70 i 125 -- \ Err bitreich.org 70 i 126 "${t}" Err bitreich.org 70 i 127 done Err bitreich.org 70 i 128 Err bitreich.org 70 i 129 Err bitreich.org 70 i 130 Features Err bitreich.org 70 i 131 -------- Err bitreich.org 70 i 132 Err bitreich.org 70 i 133 - Log of all commits from HEAD. Err bitreich.org 70 i 134 - Log and diffstat per commit. Err bitreich.org 70 i 135 - Show file tree with line numbers. Err bitreich.org 70 i 136 - Show references: local branches and tags. Err bitreich.org 70 i 137 - Detect README and LICENSE file from HEAD and link it as a page. Err bitreich.org 70 i 138 - Detect submodules (.gitmodules file) from HEAD and link it as a page. Err bitreich.org 70 i 139 - Atom feed of the commit log (atom.xml). Err bitreich.org 70 i 140 - Atom feed of the tags/refs (tags.xml). Err bitreich.org 70 i 141 - Make index page for multiple repositories with stagit-gopher-index. Err bitreich.org 70 i 142 - After generating the pages (relatively slow) serving the files is very fast, Err bitreich.org 70 i 143 simple and requires little resources (because the content is static), only Err bitreich.org 70 i 144 a geomyidae Gopher server is required. Err bitreich.org 70 i 145 Err bitreich.org 70 i 146 Err bitreich.org 70 i 147 Cons Err bitreich.org 70 i 148 ---- Err bitreich.org 70 i 149 Err bitreich.org 70 i 150 - Not suitable for large repositories (2000+ commits), because diffstats are Err bitreich.org 70 i 151 an expensive operation, the cache (-c flag) is a workaround for this in Err bitreich.org 70 i 152 some cases. Err bitreich.org 70 i 153 - Not suitable for large repositories with many files, because all files are Err bitreich.org 70 i 154 written for each execution of stagit. This is because stagit shows the lines Err bitreich.org 70 i 155 of textfiles and there is no "cache" for file metadata (this would add more Err bitreich.org 70 i 156 complexity to the code). Err bitreich.org 70 i 157 - Not suitable for repositories with many branches, a quite linear history is Err bitreich.org 70 i 158 assumed (from HEAD). Err bitreich.org 70 i 159 - Relatively slow to run the first time (about 3 seconds for sbase, Err bitreich.org 70 i 160 1500+ commits), incremental updates are faster. Err bitreich.org 70 i 161 - Does not support some dynamic features like: Err bitreich.org 70 i 162 - Snapshot tarballs per commit. Err bitreich.org 70 i 163 - File tree per commit. Err bitreich.org 70 i 164 - History log of branches diverged from HEAD. Err bitreich.org 70 i 165 - Stats (git shortlog -s). Err bitreich.org 70 i 166 Err bitreich.org 70 i 167 This is by design, just use git locally. Err bitreich.org 70 .