2022-12-02 16:41:55 -05:00
# repo2html
2022-12-20 00:42:35 -05:00
A command-line tool that generates a static HTML representation of a Git repository.
2022-12-09 02:15:03 -05:00
2022-12-20 00:42:35 -05:00
## Page contents
2022-12-09 02:15:03 -05:00
2022-12-20 00:42:35 -05:00
<!-- vim - markdown - toc GFM -->
2022-12-09 02:15:03 -05:00
2022-12-20 00:42:35 -05:00
- [Features ](#features )
- [Requirements ](#requirements )
- [Usage ](#usage )
- [Installation ](#installation )
- [Configuration ](#configuration )
- [Templates ](#templates )
- [Environment variables ](#environment-variables )
- [Setting up a Git forge on your web server ](#setting-up-a-git-forge-on-your-web-server )
- [Alternative Git-to-HTML tools ](#alternative-git-to-html-tools )
- [Existing Git forges ](#existing-git-forges )
- [Existing Git forge software ](#existing-git-forge-software )
- [Todos ](#todos )
2022-12-09 02:15:03 -05:00
2022-12-20 00:42:35 -05:00
<!-- vim - markdown - toc -->
2022-12-09 11:00:07 -05:00
2022-12-20 00:42:35 -05:00
## Features
2022-12-02 16:41:55 -05:00
2022-12-20 00:42:35 -05:00
- Static html files
- Customizable templates
- Can be used as a standalone command-line tool, or in a Git hook
- Built-in, plaintext issue support
- Image support
- Markdown files are rendered as HTML
- No resident background process
2022-12-02 16:41:55 -05:00
2022-12-20 00:42:35 -05:00
## Requirements
2022-12-02 16:41:55 -05:00
2022-12-20 00:42:35 -05:00
- [Chicken Scheme ](https://call-cc.org/ ), and eggs:
2022-12-09 11:00:08 -05:00
- [clojurian ](https://wiki.call-cc.org/eggref/5/clojurian )
2022-12-16 12:28:55 -05:00
- [ersatz ](https://wiki.call-cc.org/eggref/5/ersatz )
- [lowdown ](https://wiki.call-cc.org/eggref/5/lowdown )
2022-12-13 17:02:01 -05:00
- [scss ](https://wiki.call-cc.org/eggref/5/scss )
- [srfi-1 ](https://wiki.call-cc.org/eggref/5/srfi-1 )
- [srfi-13 ](https://wiki.call-cc.org/eggref/5/srfi-13 )
- [srfi-14 ](https://wiki.call-cc.org/eggref/5/srfi-14 )
2022-12-16 12:28:55 -05:00
- [sxml-transforms ](https://wiki.call-cc.org/eggref/5/sxml-transforms )
- [symbol-utils ](https://wiki.call-cc.org/eggref/5/symbol-utils )
- [utf8 ](https://wiki.call-cc.org/eggref/5/utf8 )
2022-12-20 00:42:35 -05:00
- Git
## Usage
repo2html < destination > < template-directory >
Run `repo2html` inside the root directory of a Git repository or a bare Git repository.
- `<destination>` is the path to the directory that you want the HTML files to be generated in.
- `<template-directory>` is the path to the directory that contains a
`default.html` file. Refer to `assets/templates/default.html` for an example
`default.html` file.
The HTML that's generated represents the state of the `HEAD` commit, not the
current state of the work tree.
## Installation
This section guides you through installing the required dependencies, compiling
a binary, and then installing the binary. By default, `repo2html` installs
into the `/usr/local/bin` directory.
1. Ensure you're in the `repo2html` git repository.
2. As root, run `make dependencies` to install the required Chicken Scheme eggs.
3. Run `make` to compile a static `repo2html` binary in the current directory.
4. As root, run `make install` to copy the `repo2html` binary into the `/usr/local/bin` directory.
**Note**: If you want to use `main.scm` as the `repo2html` executable, instead
of compiling a static binary file, then run
`cp main.scm /usr/local/bin/repo2html` as root.
## Configuration
You can `repo2html` by changing the following items:
- [Templates ](#templates )
- [Environment variables ](#environment-variables )
2022-12-02 16:54:38 -05:00
2022-12-20 00:42:35 -05:00
### Templates
2022-12-08 21:20:04 -05:00
2022-12-20 00:42:35 -05:00
You can customize `repo2html` by editing the `assets/templates/default.html` , and then specifying the path to the `default.html` file as the second command-line argument when running `repo2html` .
2022-12-08 21:20:04 -05:00
2022-12-20 00:42:35 -05:00
For example, if you placed a `default.html` file in `~/bin/templates` , and you serve HTML files from `/var/www/git` , then you run `repo2html /var/www/git ~/bin/templates` .
2022-12-08 21:20:04 -05:00
2022-12-20 00:42:35 -05:00
### Environment variables
2022-12-07 15:18:27 -05:00
2022-12-20 00:42:35 -05:00
You can provide a generic description by setting the `REPO2HTML_DESCRIPTION` environment variable, or by adding a description in a `description` file in the root directory of your Git repository.
2022-12-02 16:41:55 -05:00
2022-12-20 00:42:35 -05:00
## Setting up a Git forge on your web server
2022-12-06 00:07:43 -05:00
2022-12-20 00:42:35 -05:00
Refer to [Create a Git forge with repo2html ](documentation/create-a-git-forge-with-repo2html.md.html ) to learn how use
`repo2html` as a post-receive hook to auto-generate HTML webpages for bare Git repositories on a remote web server.
2022-12-06 00:07:43 -05:00
2022-12-20 00:42:35 -05:00
## Alternative Git-to-HTML tools
- [stagit ](https://codemadness.org/git/stagit/file/README.html )
- [depp ](https://git.8pit.net/depp.git/ )
- [git-arr ](https://blitiri.com.ar/p/git-arr/ )
## Existing Git forges
- [NotABug ](https://notabug.org/ )
- [Codeberg ](https://codeberg.org/ )
- [sourcehut ](https://sourcehut.org/ )
- [GitLab ](https://gitlab.com/ )
- [Bitbucket ](https://bitbucket.org/product/ )
- [SourceForge ](https://sourceforge.net/ )
- [GitHub ](https://github.com/ )
## Existing Git forge software
[GitLab ](https://about.gitlab.com/install/ )
[Gogs ](https://gogs.io/ )
[Gitea ](https://gitea.io/ )
[cgit ](https://git.zx2c4.com/cgit/ )
[GitWeb ](https://git-scm.com/book/en/v2/Git-on-the-Server-GitWeb )
[legit ](https://git.icyphox.sh/legit )
## Todos
2022-12-02 16:41:55 -05:00
2022-12-09 11:52:38 -05:00
- **documentation/feature**: use post-update rather than post-receive hook for simplicity
- **documentation**: also describe use with post-commit hook
2022-12-20 00:42:35 -05:00
- **documentation**: describe readme, license, and issues behaviours
2022-12-09 11:52:38 -05:00
- **feature**: multi-page or collapse-able files list
- **feature**: branches and releases (tags)
2022-12-08 21:01:31 -05:00
- **feature**: clickable line numbers in source files
2022-12-20 00:42:35 -05:00
- **feature**: display binary files as output from binary-file analysis tools like `hexdump` , `xxd` , `dumpelf` , `elfls` , `readelf` , etc.?
2022-12-09 11:52:38 -05:00
- **feature**: syntax highlighting?
2022-12-12 00:31:32 -05:00
- **feature**: markdown-render git log text
2022-12-13 12:23:23 -05:00
- **feature**: other mechanisms for header id application like uniqueness checking, sequential numbering
2022-12-09 02:15:03 -05:00