diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2026-08-31 17:10:07 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2026-08-31 17:10:07 +0200 |
| commit | 66b54db812b01f5b944b0e5694a1473bdbcbaf32 (patch) | |
| tree | 177d8c6120c8df5e5a63162417258e1522951c11 | |
| download | cgit-config-66b54db812b01f5b944b0e5694a1473bdbcbaf32.tar.gz cgit-config-66b54db812b01f5b944b0e5694a1473bdbcbaf32.zip | |
| -rw-r--r-- | README.md | 17 | ||||
| -rw-r--r-- | cgitrc | 116 | ||||
| -rw-r--r-- | custom/README.html | 81 | ||||
| -rw-r--r-- | custom/README.md | 78 | ||||
| -rwxr-xr-x | custom/about-filter.sh | 16 | ||||
| -rw-r--r-- | custom/cgit.css | 987 | ||||
| -rw-r--r-- | custom/cgit.png | bin | 0 -> 2802 bytes | |||
| -rw-r--r-- | custom/favicon.png | bin | 0 -> 4828 bytes | |||
| -rw-r--r-- | custom/footer.html | 4 | ||||
| -rw-r--r-- | custom/head.html | 1 | ||||
| -rwxr-xr-x | deploy.sh | 16 | ||||
| -rw-r--r-- | lighttpd.conf | 24 |
12 files changed, 1340 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ae0df5 --- /dev/null +++ b/README.md | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | # My cgit configuration | ||
| 2 | |||
| 3 | This repository contains all the files needed to configure my | ||
| 4 | [cgit](https://git.zx2c4.com/cgit/about) instance: | ||
| 5 | |||
| 6 | * `cgitrc`: the main configuration file. | ||
| 7 | * `custom/README.html`: the content of the main "About" page, generated | ||
| 8 | manually from `custom/README.md`. | ||
| 9 | * `custom/about-filter.sh`: custom filter for README pages. | ||
| 10 | * Other files in `custom/`: various static content (pictures, HTML | ||
| 11 | snippets) used to build the pages. | ||
| 12 | |||
| 13 | For testing locally, you can use `lighttpd.conf` (but first change it to | ||
| 14 | match your username!). The script `deploy.sh` can be used to push the | ||
| 15 | files to the correct folder, either locally or remotely. This works on | ||
| 16 | Alpine Linux, the paths may vary for other distros. See also | ||
| 17 | [Alpine Linux Wiki - Cgit](https://wiki.alpinelinux.org/wiki/Cgit). | ||
| @@ -0,0 +1,116 @@ | |||
| 1 | virtual-root=/ | ||
| 2 | |||
| 3 | ####################################################################### | ||
| 4 | # General HTML customization | ||
| 5 | ####################################################################### | ||
| 6 | |||
| 7 | # My logo, favicon and css served with every page. The favicon can be | ||
| 8 | # in either .png or .ico format. For the CSS I started by copying the | ||
| 9 | # default cgit.css and made some changes from there. | ||
| 10 | # The path is relative to cgit's folder. | ||
| 11 | logo=/custom/cgit.png | ||
| 12 | favicon=/custom/favicon.png | ||
| 13 | css=/custom/cgit.css | ||
| 14 | |||
| 15 | # Custom pieces of HTML added to every page, at the top and and the | ||
| 16 | # bottom respectively. My header currently contains only one <meta> tag | ||
| 17 | # for better view on small screens. The footer is a custom signature | ||
| 18 | # with link to my main website. | ||
| 19 | # Note that we need to specify the full path, because this file is read | ||
| 20 | # by cgit, not served directly by the web server (lighttpd). | ||
| 21 | head-include=/usr/share/webapps/cgit/custom/head.html | ||
| 22 | footer=/usr/share/webapps/cgit/custom/footer.html | ||
| 23 | |||
| 24 | ####################################################################### | ||
| 25 | # Main page customization | ||
| 26 | ####################################################################### | ||
| 27 | |||
| 28 | # Title and description | ||
| 29 | root-title=Sebastiano's repositories | ||
| 30 | root-desc= | ||
| 31 | |||
| 32 | # Contents of the about page for the main page. Full path needed. | ||
| 33 | root-readme=/usr/share/webapps/cgit/custom/README.html | ||
| 34 | |||
| 35 | # Bare git repositories are, by convention, in folders that end in | ||
| 36 | # .git. This option removes the suffix from the repository name in the | ||
| 37 | # main page. | ||
| 38 | remove-suffix=1 | ||
| 39 | |||
| 40 | # Do not show repository owner name (it is always me). | ||
| 41 | enable-index-owner=0 | ||
| 42 | |||
| 43 | # Disable extra "links" column in the repository list. This is the | ||
| 44 | # default, but I want to be explicit. | ||
| 45 | enable-index-links=0 | ||
| 46 | |||
| 47 | # Show all repositories in one page. | ||
| 48 | max-repo-count=0 | ||
| 49 | |||
| 50 | # Sort repository list by name. This is the default setting, but I want | ||
| 51 | # to be explicit. | ||
| 52 | repository-sort="name" | ||
| 53 | |||
| 54 | ####################################################################### | ||
| 55 | # About (README) page configuration | ||
| 56 | ####################################################################### | ||
| 57 | |||
| 58 | # Path to our custom "about filter". It uses lowdown for Markdown files | ||
| 59 | # and the default txt2html filter shipped with cgit (inlined into the | ||
| 60 | # custom script) for plain text files. | ||
| 61 | about-filter=/usr/share/webapps/cgit/custom/about-filter.sh | ||
| 62 | |||
| 63 | # Possible README files. I never use anything other than one of these | ||
| 64 | # three. If necessary, the file name can be prefixed by the branch | ||
| 65 | # name, e.g. main:README.md. | ||
| 66 | readme=:README.md | ||
| 67 | readme=:README.txt | ||
| 68 | readme=:README | ||
| 69 | |||
| 70 | ####################################################################### | ||
| 71 | # Repository page configuration | ||
| 72 | ####################################################################### | ||
| 73 | |||
| 74 | # Sort branches by age instead of name. | ||
| 75 | branch-sort="age" | ||
| 76 | |||
| 77 | # Sort files in the repository case-sensitively. This is the default | ||
| 78 | # setting, but I want to make it explicit. | ||
| 79 | case-sensitive-sort=1 | ||
| 80 | |||
| 81 | # Show correct URL for cloning the repository. | ||
| 82 | clone-prefix=https://git.tronto.net | ||
| 83 | |||
| 84 | # Generate graphical overview of deleted / added lines for each commit. | ||
| 85 | enable-commit-graph=1 | ||
| 86 | |||
| 87 | # Turn file names into links in the log view. | ||
| 88 | enable-follow-links=1 | ||
| 89 | |||
| 90 | # Show number of files and number of lines modified in each commit log. | ||
| 91 | enable-log-filecount=1 | ||
| 92 | enable-log-linecount=1 | ||
| 93 | |||
| 94 | # Show diffs side by side instead of "unidiffs". | ||
| 95 | side-by-side-diffs=1 | ||
| 96 | |||
| 97 | # Generate download links for tar.gz and zip archives of each tag. | ||
| 98 | # I would like them for the current state of the repo (master branch) | ||
| 99 | # too, but it does not seem to be possible with cgit. | ||
| 100 | snapshots=tar.gz zip | ||
| 101 | |||
| 102 | ####################################################################### | ||
| 103 | # Cache settings | ||
| 104 | ####################################################################### | ||
| 105 | |||
| 106 | # Global cache size setting. By default, cache is disabled. | ||
| 107 | cache-size=1000 | ||
| 108 | |||
| 109 | ####################################################################### | ||
| 110 | # Scan path | ||
| 111 | ####################################################################### | ||
| 112 | |||
| 113 | # The folder that contains all my git repositories. Since some other | ||
| 114 | # settings must be placed before this one in order to be picked up | ||
| 115 | # correctly, we put it at the bottom of this file. | ||
| 116 | scan-path=/home/git | ||
diff --git a/custom/README.html b/custom/README.html new file mode 100644 index 0000000..99f122b --- /dev/null +++ b/custom/README.html | |||
| @@ -0,0 +1,81 @@ | |||
| 1 | <!-- Generated with `lowdown README.md`, custom-styled div added by hand --> | ||
| 2 | <div style="max-width: 42em; margin: auto;"> | ||
| 3 | |||
| 4 | <h1 id="my-git-repositories">My git repositories</h1> | ||
| 5 | <p>In this page you can find all my public git repositories. It is a collection | ||
| 6 | of programs, tutorials, configuration files and more. All my repositories | ||
| 7 | are also mirrored on <a href="https://github.com/sebastianotronto">my GitHub page</a>.</p> | ||
| 8 | <p>Here are some highlights; for a full list, see <a href="../">the index</a>.</p> | ||
| 9 | <h2 id="programs">Programs</h2> | ||
| 10 | <ul> | ||
| 11 | <li><a href="../ancient-projects">ancient-projects</a> is a collection of my early coding | ||
| 12 | projects (2006-2010), mostly written in Java.</li> | ||
| 13 | <li><a href="../nissy-core">nissy-core</a> is my biggest hobby project. It is a Rubik’s | ||
| 14 | cube solver focused on finding optimal solutions. It uses a standard A* | ||
| 15 | search method supported by a custom set of pruning tables. It can be | ||
| 16 | included as a library in your C, C++ or Python projects, and it can build | ||
| 17 | to <a href="https://en.wikipedia.org/wiki/WebAssembly">WebAssembly</a>.</li> | ||
| 18 | <li><a href="../nissy-classic">nissy-classic</a> is another Rubik’s cube solver, focused | ||
| 19 | on assisting the user in exploring <a href="https://www.speedsolving.com/wiki/index.php/Domino_Reduction">domino | ||
| 20 | reduction</a> | ||
| 21 | solutions.</li> | ||
| 22 | <li><a href="../minesweeper">minesweeper</a> is an unremarkable attempt at building a | ||
| 23 | graphical application with <a href="https://www.raylib.com/">raylib</a> and | ||
| 24 | <a href="https://harelang.org/">Hare</a>.</li> | ||
| 25 | <li><a href="../zmodn">zmodn</a> is a small library for <a href="https://en.wikipedia.org/wiki/Modular_arithmetic">integers modulo | ||
| 26 | N</a> written in | ||
| 27 | modern C++. I also ported it to Rust, see <a href="../zmodn-rs">zmodn-rs</a>.</li> | ||
| 28 | </ul> | ||
| 29 | <h2 id="configuration-scripts-and-website-sources">Configuration, scripts and website sources</h2> | ||
| 30 | <ul> | ||
| 31 | <li><a href="../config">config</a> contains the configuration files (a.k.a. dotfiles) for | ||
| 32 | my Alpine Linux laptop setup, as well as a collection of scripts for my | ||
| 33 | daily desktop use.</li> | ||
| 34 | <li><a href="../sebastiano.tronto.net">sebastiano.tronto.net</a> contains the source code | ||
| 35 | (Markdown) for <a href="https://sebastiano.tronto.net">my personal website</a>, | ||
| 36 | including template HTML and CSS files, and build scripts.</li> | ||
| 37 | <li><a href="../cgit-config">cgit-config</a> contains the configuration files for this | ||
| 38 | cgit page.</li> | ||
| 39 | </ul> | ||
| 40 | <h2 id="programming-challenges">Programming challenges</h2> | ||
| 41 | <ul> | ||
| 42 | <li><a href="../aoc">aoc</a> contains my solutions to (some of) the <a href="https://adventofcode.com">Advent of | ||
| 43 | Code</a> problems.</li> | ||
| 44 | <li><a href="../cses">cses</a> contains my solutions to (some of) the | ||
| 45 | <a href="https://cses.fi">cses.fi</a> problems.</li> | ||
| 46 | </ul> | ||
| 47 | <h2 id="math">Math</h2> | ||
| 48 | <ul> | ||
| 49 | <li><a href="../ecm">ecm</a> is a Python implementation of the | ||
| 50 | <a href="https://en.wikipedia.org/wiki/Lenstra_elliptic-curve_factorization">Elliptic Curve factorization | ||
| 51 | Method</a> | ||
| 52 | that I have used for a couple of | ||
| 53 | <a href="https://sebastiano.tronto.net/talks">talks</a>.</li> | ||
| 54 | <li><a href="../kummer-degrees">kummer-degrees</a> is a | ||
| 55 | <a href="https://www.sagemath.org/">SageMath</a> library to compute | ||
| 56 | the degrees of <a href="https://en.wikipedia.org/wiki/Kummer_theory">Kummer extensions</a> | ||
| 57 | over the rational numbers.</li> | ||
| 58 | <li><a href="../mathsoftware">mathsoftware</a> containes slides, exercises and references | ||
| 59 | for the course Mathematical Software that I taught at the | ||
| 60 | <a href="https://uni.lu">University of Luxembourg</a> in the Fall of 2021.</li> | ||
| 61 | <li><a href="../arithmeticbilliard">arithmeticbilliard</a> contains code for <a href="https://en.wikipedia.org/wiki/Arithmetic_billiards">Arithmetic | ||
| 62 | Billiard</a> simulations.</li> | ||
| 63 | <li><a href="../platonicsolids">platonicsolids</a> is a collection of Latex files for | ||
| 64 | drawing <a href="https://en.wikipedia.org/wiki/Platonic_solid">Platonic solids</a> | ||
| 65 | with <a href="https://en.wikipedia.org/wiki/PGF/TikZ">TikZ</a>.</li> | ||
| 66 | </ul> | ||
| 67 | <h2 id="tutorials-and-proofs-of-concept">Tutorials and proofs of concept</h2> | ||
| 68 | <ul> | ||
| 69 | <li><a href="../fmctutorial">fmctutorial</a> is my tutorial for | ||
| 70 | <a href="https://sebastiano.tronto.net/speedcubing">solving the Rubik’s Cube</a> | ||
| 71 | in as few moves as possible. You can download the pdf from | ||
| 72 | <a href="https://fmcsolves.cubing.net">fmcsolves.cubing.net</a>.</li> | ||
| 73 | <li><a href="../emscripten-tutorial">emscripten-tutorial</a> contains the codes for | ||
| 74 | the example of <a href="https://sebastiano.tronto.net/blog/2025-06-06-webdev">a blog post of | ||
| 75 | mine</a> about | ||
| 76 | <a href="https://en.wikipedia.org/wiki/WebAssembly">WebAssembly</a> | ||
| 77 | and <a href="https://en.wikipedia.org/wiki/Emscripten">Emscripten</a>.</li> | ||
| 78 | <li><a href="../python">python-c</a> is a minimal example of Python module written in C.</li> | ||
| 79 | </ul> | ||
| 80 | |||
| 81 | </div> | ||
diff --git a/custom/README.md b/custom/README.md new file mode 100644 index 0000000..a22aa38 --- /dev/null +++ b/custom/README.md | |||
| @@ -0,0 +1,78 @@ | |||
| 1 | # My git repositories | ||
| 2 | |||
| 3 | In this page you can find all my public git repositories. It is a collection | ||
| 4 | of programs, tutorials, configuration files and more. All my repositories | ||
| 5 | are also mirrored on [my GitHub page](https://github.com/sebastianotronto). | ||
| 6 | |||
| 7 | Here are some highlights; for a full list, see [the index](../). | ||
| 8 | |||
| 9 | ## Programs | ||
| 10 | |||
| 11 | * [ancient-projects](../ancient-projects) is a collection of my early coding | ||
| 12 | projects (2006-2010), mostly written in Java. | ||
| 13 | * [nissy-core](../nissy-core) is my biggest hobby project. It is a Rubik's | ||
| 14 | cube solver focused on finding optimal solutions. It uses a standard A* | ||
| 15 | search method supported by a custom set of pruning tables. It can be | ||
| 16 | included as a library in your C, C++ or Python projects, and it can build | ||
| 17 | to [WebAssembly](https://en.wikipedia.org/wiki/WebAssembly). | ||
| 18 | * [nissy-classic](../nissy-classic) is another Rubik's cube solver, focused | ||
| 19 | on assisting the user in exploring [domino | ||
| 20 | reduction](https://www.speedsolving.com/wiki/index.php/Domino_Reduction) | ||
| 21 | solutions. | ||
| 22 | * [minesweeper](../minesweeper) is an unremarkable attempt at building a | ||
| 23 | graphical application with [raylib](https://www.raylib.com/) and | ||
| 24 | [Hare](https://harelang.org/). | ||
| 25 | * [zmodn](../zmodn) is a small library for [integers modulo | ||
| 26 | N](https://en.wikipedia.org/wiki/Modular_arithmetic) written in | ||
| 27 | modern C++. I also ported it to Rust, see [zmodn-rs](../zmodn-rs). | ||
| 28 | |||
| 29 | ## Configuration, scripts and website sources | ||
| 30 | |||
| 31 | * [config](../config) contains the configuration files (a.k.a. dotfiles) for | ||
| 32 | my Alpine Linux laptop setup, as well as a collection of scripts for my | ||
| 33 | daily desktop use. | ||
| 34 | * [sebastiano.tronto.net](../sebastiano.tronto.net) contains the source code | ||
| 35 | (Markdown) for [my personal website](https://sebastiano.tronto.net), | ||
| 36 | including template HTML and CSS files, and build scripts. | ||
| 37 | * [cgit-config](../cgit-config) contains the configuration files for this | ||
| 38 | cgit page. | ||
| 39 | |||
| 40 | ## Programming challenges | ||
| 41 | |||
| 42 | * [aoc](../aoc) contains my solutions to (some of) the [Advent of | ||
| 43 | Code](https://adventofcode.com) problems. | ||
| 44 | * [cses](../cses) contains my solutions to (some of) the | ||
| 45 | [cses.fi](https://cses.fi) problems. | ||
| 46 | |||
| 47 | ## Math | ||
| 48 | |||
| 49 | * [ecm](../ecm) is a Python implementation of the | ||
| 50 | [Elliptic Curve factorization | ||
| 51 | Method](https://en.wikipedia.org/wiki/Lenstra_elliptic-curve_factorization) | ||
| 52 | that I have used for a couple of | ||
| 53 | [talks](https://sebastiano.tronto.net/talks). | ||
| 54 | * [kummer-degrees](../kummer-degrees) is a | ||
| 55 | [SageMath](https://www.sagemath.org/) library to compute | ||
| 56 | the degrees of [Kummer extensions](https://en.wikipedia.org/wiki/Kummer_theory) | ||
| 57 | over the rational numbers. | ||
| 58 | * [mathsoftware](../mathsoftware) containes slides, exercises and references | ||
| 59 | for the course Mathematical Software that I taught at the | ||
| 60 | [University of Luxembourg](https://uni.lu) in the Fall of 2021. | ||
| 61 | * [arithmeticbilliard](../arithmeticbilliard) contains code for [Arithmetic | ||
| 62 | Billiard](https://en.wikipedia.org/wiki/Arithmetic_billiards) simulations. | ||
| 63 | * [platonicsolids](../platonicsolids) is a collection of Latex files for | ||
| 64 | drawing [Platonic solids](https://en.wikipedia.org/wiki/Platonic_solid) | ||
| 65 | with [TikZ](https://en.wikipedia.org/wiki/PGF/TikZ). | ||
| 66 | |||
| 67 | ## Tutorials and proofs of concept | ||
| 68 | |||
| 69 | * [fmctutorial](../fmctutorial) is my tutorial for | ||
| 70 | [solving the Rubik's Cube](https://sebastiano.tronto.net/speedcubing) | ||
| 71 | in as few moves as possible. You can download the pdf from | ||
| 72 | [fmcsolves.cubing.net](https://fmcsolves.cubing.net). | ||
| 73 | * [emscripten-tutorial](../emscripten-tutorial) contains the codes for | ||
| 74 | the example of [a blog post of | ||
| 75 | mine](https://sebastiano.tronto.net/blog/2025-06-06-webdev) about | ||
| 76 | [WebAssembly](https://en.wikipedia.org/wiki/WebAssembly) | ||
| 77 | and [Emscripten](https://en.wikipedia.org/wiki/Emscripten). | ||
| 78 | * [python-c](../python) is a minimal example of Python module written in C. | ||
diff --git a/custom/about-filter.sh b/custom/about-filter.sh new file mode 100755 index 0000000..80456da --- /dev/null +++ b/custom/about-filter.sh | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | case "$1" in | ||
| 4 | *.md) | ||
| 5 | lowdown --html-no-skiphtml --html-no-escapehtml | ||
| 6 | ;; | ||
| 7 | *.html) | ||
| 8 | cat - | ||
| 9 | ;; | ||
| 10 | *) | ||
| 11 | # Copied from default cgit txt2html filter, with added id for styling | ||
| 12 | echo "<pre id=\"nobox\">" | ||
| 13 | sed "s|&|\\&|g;s|'|\\'|g;s|\"|\\"|g;s|<|\\<|g;s|>|\\>|g" | ||
| 14 | echo "</pre id=\"nobox\">" | ||
| 15 | ;; | ||
| 16 | esac | ||
diff --git a/custom/cgit.css b/custom/cgit.css new file mode 100644 index 0000000..3993eb1 --- /dev/null +++ b/custom/cgit.css | |||
| @@ -0,0 +1,987 @@ | |||
| 1 | /* Custom CSS that applies only to readme files */ | ||
| 2 | div#cgit div#summary pre:not(#nobox) { | ||
| 3 | background-color: #eeeeee; | ||
| 4 | border: 2px solid; | ||
| 5 | padding: 6px; | ||
| 6 | overflow-x: auto; | ||
| 7 | } | ||
| 8 | |||
| 9 | div#cgit div#summary pre | ||
| 10 | |||
| 11 | div#cgit div#summary pre code { | ||
| 12 | padding: 0px; | ||
| 13 | } | ||
| 14 | |||
| 15 | div#cgit div#summary code { | ||
| 16 | background-color: #eeeeee; | ||
| 17 | padding: 2px; | ||
| 18 | } | ||
| 19 | |||
| 20 | div#cgit div#summary { | ||
| 21 | max-width: 42em; | ||
| 22 | margin: auto; | ||
| 23 | } | ||
| 24 | |||
| 25 | div#cgit div#summary h1 { | ||
| 26 | text-align: center; | ||
| 27 | } | ||
| 28 | |||
| 29 | /* | ||
| 30 | Custom CSS for small screens. | ||
| 31 | |||
| 32 | Original author Mateja mariÄ (GPL 3.0)‡ For full license see: | ||
| 33 | https://git.matejamaric.com/responsive-cgit-css/tree/LICENSE | ||
| 34 | */ | ||
| 35 | @media only screen and (max-width: 800px) { | ||
| 36 | /* HEADER */ | ||
| 37 | /* No logo (saves space) */ | ||
| 38 | div#cgit table#header td.logo { | ||
| 39 | display: none; | ||
| 40 | } | ||
| 41 | /* wrap title text (not working as intended right now) */ | ||
| 42 | td.main a { | ||
| 43 | max-width: 100%; | ||
| 44 | word-wrap: break-word; | ||
| 45 | overflow-wrap: break-word; | ||
| 46 | } | ||
| 47 | /* move branch switcher to left */ | ||
| 48 | div#cgit table#header td.form { | ||
| 49 | text-align: left; | ||
| 50 | display: none; | ||
| 51 | } | ||
| 52 | |||
| 53 | /* TABS */ | ||
| 54 | /* both tabs and form are blocks */ | ||
| 55 | div#cgit table.tabs td { | ||
| 56 | display: block; | ||
| 57 | } | ||
| 58 | /* every tab is block */ | ||
| 59 | div#cgit table.tabs td a { | ||
| 60 | display: block; | ||
| 61 | text-align: right; | ||
| 62 | } | ||
| 63 | |||
| 64 | /* CONTENT */ | ||
| 65 | div#cgit div.content { | ||
| 66 | overflow-x: auto; | ||
| 67 | padding: 0 !important; | ||
| 68 | } | ||
| 69 | |||
| 70 | /* PANEL ALIGNMENT */ | ||
| 71 | div#cgit div.cgit-panel { | ||
| 72 | float: left; | ||
| 73 | } | ||
| 74 | } | ||
| 75 | |||
| 76 | |||
| 77 | div#cgit { | ||
| 78 | padding: 0em; | ||
| 79 | margin: 0em; | ||
| 80 | font-family: sans-serif; | ||
| 81 | color: #333; | ||
| 82 | background: white; | ||
| 83 | padding: 4px; | ||
| 84 | } | ||
| 85 | |||
| 86 | div#cgit a { | ||
| 87 | color: blue; | ||
| 88 | text-decoration: none; | ||
| 89 | } | ||
| 90 | |||
| 91 | div#cgit a:hover { | ||
| 92 | text-decoration: underline; | ||
| 93 | } | ||
| 94 | |||
| 95 | div#cgit table { | ||
| 96 | border-collapse: collapse; | ||
| 97 | } | ||
| 98 | |||
| 99 | div#cgit table#header { | ||
| 100 | width: 100%; | ||
| 101 | margin-bottom: 1em; | ||
| 102 | } | ||
| 103 | |||
| 104 | div#cgit table#header td.logo { | ||
| 105 | width: 96px; | ||
| 106 | vertical-align: top; | ||
| 107 | } | ||
| 108 | |||
| 109 | div#cgit table#header td.main { | ||
| 110 | font-size: 250%; | ||
| 111 | padding-left: 10px; | ||
| 112 | white-space: nowrap; | ||
| 113 | } | ||
| 114 | |||
| 115 | div#cgit table#header td.main a { | ||
| 116 | color: #000; | ||
| 117 | } | ||
| 118 | |||
| 119 | div#cgit table#header td.form { | ||
| 120 | text-align: right; | ||
| 121 | vertical-align: bottom; | ||
| 122 | padding-right: 1em; | ||
| 123 | padding-bottom: 2px; | ||
| 124 | white-space: nowrap; | ||
| 125 | } | ||
| 126 | |||
| 127 | div#cgit table#header td.form form, | ||
| 128 | div#cgit table#header td.form input, | ||
| 129 | div#cgit table#header td.form select { | ||
| 130 | font-size: 90%; | ||
| 131 | } | ||
| 132 | |||
| 133 | div#cgit table#header td.sub { | ||
| 134 | color: #777; | ||
| 135 | border-top: solid 1px #ccc; | ||
| 136 | padding-left: 10px; | ||
| 137 | } | ||
| 138 | |||
| 139 | div#cgit table.tabs { | ||
| 140 | border-bottom: solid 3px #ccc; | ||
| 141 | border-collapse: collapse; | ||
| 142 | margin-top: 2em; | ||
| 143 | margin-bottom: 0px; | ||
| 144 | width: 100%; | ||
| 145 | } | ||
| 146 | |||
| 147 | div#cgit table.tabs td { | ||
| 148 | padding: 0px 1em; | ||
| 149 | vertical-align: bottom; | ||
| 150 | } | ||
| 151 | |||
| 152 | div#cgit table.tabs td a { | ||
| 153 | padding: 2px 0.75em; | ||
| 154 | color: #777; | ||
| 155 | font-size: 110%; | ||
| 156 | } | ||
| 157 | |||
| 158 | div#cgit table.tabs td a.active { | ||
| 159 | color: #000; | ||
| 160 | background-color: #ccc; | ||
| 161 | } | ||
| 162 | |||
| 163 | div#cgit table.tabs a[href^="http://"]:after, div#cgit table.tabs a[href^="https://"]:after { | ||
| 164 | content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfgAhcJDQY+gm2TAAAAHWlUWHRDb21tZW50AAAAAABDcmVhdGVkIHdpdGggR0lNUGQuZQcAAABbSURBVAhbY2BABs4MU4CwhYHBh2Erww4wrGFQZHjI8B8IgUIscJWyDHcggltQhI4zGDCcRwhChPggHIggP1QoAVmQkSETrGoHsiAEsACtBYN0oDAMbgU6EBcAAL2eHUt4XUU4AAAAAElFTkSuQmCC); | ||
| 165 | opacity: 0.5; | ||
| 166 | margin: 0 0 0 5px; | ||
| 167 | } | ||
| 168 | |||
| 169 | div#cgit table.tabs td.form { | ||
| 170 | text-align: right; | ||
| 171 | } | ||
| 172 | |||
| 173 | div#cgit table.tabs td.form form { | ||
| 174 | padding-bottom: 2px; | ||
| 175 | font-size: 90%; | ||
| 176 | white-space: nowrap; | ||
| 177 | } | ||
| 178 | |||
| 179 | div#cgit table.tabs td.form input, | ||
| 180 | div#cgit table.tabs td.form select { | ||
| 181 | font-size: 90%; | ||
| 182 | } | ||
| 183 | |||
| 184 | div#cgit div.path { | ||
| 185 | margin: 0px; | ||
| 186 | padding: 5px 2em 2px 2em; | ||
| 187 | color: #000; | ||
| 188 | background-color: #eee; | ||
| 189 | } | ||
| 190 | |||
| 191 | div#cgit div.content { | ||
| 192 | margin: 0px; | ||
| 193 | padding: 2em; | ||
| 194 | border-bottom: solid 3px #ccc; | ||
| 195 | |||
| 196 | /* | ||
| 197 | Custom settings mainly for small screens. Taken from: | ||
| 198 | https://lists.zx2c4.com/pipermail/cgit/2026-April/004988.html | ||
| 199 | */ | ||
| 200 | overflow-x: auto; | ||
| 201 | max-width: 100%; | ||
| 202 | -webkit-overflow-scrolling: touch; | ||
| 203 | } | ||
| 204 | |||
| 205 | |||
| 206 | div#cgit table.list { | ||
| 207 | width: 100%; | ||
| 208 | border: none; | ||
| 209 | border-collapse: collapse; | ||
| 210 | } | ||
| 211 | |||
| 212 | div#cgit table.list tr { | ||
| 213 | background: white; | ||
| 214 | } | ||
| 215 | |||
| 216 | div#cgit table.list tr.logheader { | ||
| 217 | background: #eee; | ||
| 218 | } | ||
| 219 | |||
| 220 | div#cgit table.list tr:nth-child(even) { | ||
| 221 | background: #f7f7f7; | ||
| 222 | } | ||
| 223 | |||
| 224 | div#cgit table.list tr:nth-child(odd) { | ||
| 225 | background: white; | ||
| 226 | } | ||
| 227 | |||
| 228 | div#cgit table.list tr:hover { | ||
| 229 | background: #eee; | ||
| 230 | } | ||
| 231 | |||
| 232 | div#cgit table.list tr.nohover { | ||
| 233 | background: white; | ||
| 234 | } | ||
| 235 | |||
| 236 | div#cgit table.list tr.nohover:hover { | ||
| 237 | background: white; | ||
| 238 | } | ||
| 239 | |||
| 240 | div#cgit table.list tr.nohover-highlight:hover:nth-child(even) { | ||
| 241 | background: #f7f7f7; | ||
| 242 | } | ||
| 243 | |||
| 244 | div#cgit table.list tr.nohover-highlight:hover:nth-child(odd) { | ||
| 245 | background: white; | ||
| 246 | } | ||
| 247 | |||
| 248 | div#cgit table.list th { | ||
| 249 | font-weight: bold; | ||
| 250 | /* color: #888; | ||
| 251 | border-top: dashed 1px #888; | ||
| 252 | border-bottom: dashed 1px #888; | ||
| 253 | */ | ||
| 254 | padding: 0.1em 0.5em 0.05em 0.5em; | ||
| 255 | vertical-align: baseline; | ||
| 256 | } | ||
| 257 | |||
| 258 | div#cgit table.list td { | ||
| 259 | border: none; | ||
| 260 | padding: 0.1em 0.5em 0.1em 0.5em; | ||
| 261 | } | ||
| 262 | |||
| 263 | div#cgit table.list td.commitgraph { | ||
| 264 | font-family: monospace; | ||
| 265 | white-space: pre; | ||
| 266 | } | ||
| 267 | |||
| 268 | div#cgit table.list td.commitgraph .column1 { | ||
| 269 | color: #a00; | ||
| 270 | } | ||
| 271 | |||
| 272 | div#cgit table.list td.commitgraph .column2 { | ||
| 273 | color: #0a0; | ||
| 274 | } | ||
| 275 | |||
| 276 | div#cgit table.list td.commitgraph .column3 { | ||
| 277 | color: #aa0; | ||
| 278 | } | ||
| 279 | |||
| 280 | div#cgit table.list td.commitgraph .column4 { | ||
| 281 | color: #00a; | ||
| 282 | } | ||
| 283 | |||
| 284 | div#cgit table.list td.commitgraph .column5 { | ||
| 285 | color: #a0a; | ||
| 286 | } | ||
| 287 | |||
| 288 | div#cgit table.list td.commitgraph .column6 { | ||
| 289 | color: #0aa; | ||
| 290 | } | ||
| 291 | |||
| 292 | div#cgit table.list td.logsubject { | ||
| 293 | font-family: monospace; | ||
| 294 | font-weight: bold; | ||
| 295 | } | ||
| 296 | |||
| 297 | div#cgit table.list td.logmsg { | ||
| 298 | font-family: monospace; | ||
| 299 | white-space: pre; | ||
| 300 | padding: 0 0.5em; | ||
| 301 | } | ||
| 302 | |||
| 303 | div#cgit table.list td a { | ||
| 304 | color: black; | ||
| 305 | } | ||
| 306 | |||
| 307 | div#cgit table.list td a.ls-dir { | ||
| 308 | font-weight: bold; | ||
| 309 | color: #00f; | ||
| 310 | } | ||
| 311 | |||
| 312 | div#cgit table.list td a:hover { | ||
| 313 | color: #00f; | ||
| 314 | } | ||
| 315 | |||
| 316 | div#cgit img { | ||
| 317 | border: none; | ||
| 318 | } | ||
| 319 | |||
| 320 | div#cgit input#switch-btn { | ||
| 321 | margin: 2px 0px 0px 0px; | ||
| 322 | } | ||
| 323 | |||
| 324 | div#cgit td#sidebar input.txt { | ||
| 325 | width: 100%; | ||
| 326 | margin: 2px 0px 0px 0px; | ||
| 327 | } | ||
| 328 | |||
| 329 | div#cgit table#grid { | ||
| 330 | margin: 0px; | ||
| 331 | } | ||
| 332 | |||
| 333 | div#cgit td#content { | ||
| 334 | vertical-align: top; | ||
| 335 | padding: 1em 2em 1em 1em; | ||
| 336 | border: none; | ||
| 337 | } | ||
| 338 | |||
| 339 | div#cgit table#downloads { | ||
| 340 | float: right; | ||
| 341 | border-collapse: collapse; | ||
| 342 | border: solid 1px #777; | ||
| 343 | margin-left: 0.5em; | ||
| 344 | margin-bottom: 0.5em; | ||
| 345 | } | ||
| 346 | |||
| 347 | div#cgit table#downloads th { | ||
| 348 | background-color: #ccc; | ||
| 349 | } | ||
| 350 | |||
| 351 | div#cgit div#blob { | ||
| 352 | border: solid 1px black; | ||
| 353 | } | ||
| 354 | |||
| 355 | div#cgit div.error { | ||
| 356 | color: red; | ||
| 357 | font-weight: bold; | ||
| 358 | margin: 1em 2em; | ||
| 359 | } | ||
| 360 | |||
| 361 | div#cgit a.ls-blob, div#cgit a.ls-dir, div#cgit .ls-mod { | ||
| 362 | font-family: monospace; | ||
| 363 | } | ||
| 364 | |||
| 365 | div#cgit td.ls-size { | ||
| 366 | text-align: right; | ||
| 367 | font-family: monospace; | ||
| 368 | width: 10em; | ||
| 369 | } | ||
| 370 | |||
| 371 | div#cgit td.ls-mode { | ||
| 372 | font-family: monospace; | ||
| 373 | width: 10em; | ||
| 374 | } | ||
| 375 | |||
| 376 | div#cgit table.blob { | ||
| 377 | margin-top: 0.5em; | ||
| 378 | border-top: solid 1px black; | ||
| 379 | } | ||
| 380 | |||
| 381 | div#cgit table.blob td.hashes, | ||
| 382 | div#cgit table.blob td.lines { | ||
| 383 | margin: 0; padding: 0 0 0 0.5em; | ||
| 384 | vertical-align: top; | ||
| 385 | color: black; | ||
| 386 | } | ||
| 387 | |||
| 388 | div#cgit table.blob td.linenumbers { | ||
| 389 | margin: 0; padding: 0 0.5em 0 0.5em; | ||
| 390 | vertical-align: top; | ||
| 391 | text-align: right; | ||
| 392 | border-right: 1px solid gray; | ||
| 393 | } | ||
| 394 | |||
| 395 | div#cgit table.blob pre { | ||
| 396 | padding: 0; margin: 0; | ||
| 397 | } | ||
| 398 | |||
| 399 | div#cgit table.blob td.linenumbers a, | ||
| 400 | div#cgit table.ssdiff td.lineno a { | ||
| 401 | color: gray; | ||
| 402 | text-align: right; | ||
| 403 | text-decoration: none; | ||
| 404 | } | ||
| 405 | |||
| 406 | div#cgit table.blob td.linenumbers a:hover, | ||
| 407 | div#cgit table.ssdiff td.lineno a:hover { | ||
| 408 | color: black; | ||
| 409 | } | ||
| 410 | |||
| 411 | div#cgit table.blob td.linenumbers a:target:before { | ||
| 412 | color: red; | ||
| 413 | content: "\2BA9"; | ||
| 414 | } | ||
| 415 | |||
| 416 | div#cgit table.blame td.hashes, | ||
| 417 | div#cgit table.blame td.lines, | ||
| 418 | div#cgit table.blame td.linenumbers { | ||
| 419 | padding: 0; | ||
| 420 | } | ||
| 421 | |||
| 422 | div#cgit table.blame td.hashes div.alt, | ||
| 423 | div#cgit table.blame td.lines div.alt { | ||
| 424 | padding: 0 0.5em 0 0.5em; | ||
| 425 | } | ||
| 426 | |||
| 427 | div#cgit table.blame td.linenumbers div.alt { | ||
| 428 | padding: 0 0.5em 0 0; | ||
| 429 | } | ||
| 430 | |||
| 431 | div#cgit table.blame div.alt:nth-child(even) { | ||
| 432 | background: #eee; | ||
| 433 | } | ||
| 434 | |||
| 435 | div#cgit table.blame div.alt:nth-child(odd) { | ||
| 436 | background: white; | ||
| 437 | } | ||
| 438 | |||
| 439 | div#cgit table.blame td.lines > div { | ||
| 440 | position: relative; | ||
| 441 | } | ||
| 442 | |||
| 443 | div#cgit table.blame td.lines > div > pre { | ||
| 444 | padding: 0 0 0 0.5em; | ||
| 445 | position: absolute; | ||
| 446 | top: 0; | ||
| 447 | } | ||
| 448 | |||
| 449 | div#cgit table.blame .oid { | ||
| 450 | font-size: 100%; | ||
| 451 | } | ||
| 452 | |||
| 453 | div#cgit table.bin-blob { | ||
| 454 | margin-top: 0.5em; | ||
| 455 | border: solid 1px black; | ||
| 456 | } | ||
| 457 | |||
| 458 | div#cgit table.bin-blob th { | ||
| 459 | font-family: monospace; | ||
| 460 | white-space: pre; | ||
| 461 | border: solid 1px #777; | ||
| 462 | padding: 0.5em 1em; | ||
| 463 | } | ||
| 464 | |||
| 465 | div#cgit table.bin-blob td { | ||
| 466 | font-family: monospace; | ||
| 467 | white-space: pre; | ||
| 468 | border-left: solid 1px #777; | ||
| 469 | padding: 0em 1em; | ||
| 470 | } | ||
| 471 | |||
| 472 | div#cgit table.nowrap td { | ||
| 473 | white-space: nowrap; | ||
| 474 | } | ||
| 475 | |||
| 476 | div#cgit table.commit-info { | ||
| 477 | border-collapse: collapse; | ||
| 478 | margin-top: 1.5em; | ||
| 479 | } | ||
| 480 | |||
| 481 | div#cgit div.cgit-panel { | ||
| 482 | float: right; | ||
| 483 | margin-top: 1.5em; | ||
| 484 | } | ||
| 485 | |||
| 486 | div#cgit div.cgit-panel table { | ||
| 487 | border-collapse: collapse; | ||
| 488 | border: solid 1px #aaa; | ||
| 489 | background-color: #eee; | ||
| 490 | } | ||
| 491 | |||
| 492 | div#cgit div.cgit-panel th { | ||
| 493 | text-align: center; | ||
| 494 | } | ||
| 495 | |||
| 496 | div#cgit div.cgit-panel td { | ||
| 497 | padding: 0.25em 0.5em; | ||
| 498 | } | ||
| 499 | |||
| 500 | div#cgit div.cgit-panel td.label { | ||
| 501 | padding-right: 0.5em; | ||
| 502 | } | ||
| 503 | |||
| 504 | div#cgit div.cgit-panel td.ctrl { | ||
| 505 | padding-left: 0.5em; | ||
| 506 | } | ||
| 507 | |||
| 508 | div#cgit table.commit-info th { | ||
| 509 | text-align: left; | ||
| 510 | font-weight: normal; | ||
| 511 | padding: 0.1em 1em 0.1em 0.1em; | ||
| 512 | vertical-align: top; | ||
| 513 | } | ||
| 514 | |||
| 515 | div#cgit table.commit-info td { | ||
| 516 | font-weight: normal; | ||
| 517 | padding: 0.1em 1em 0.1em 0.1em; | ||
| 518 | } | ||
| 519 | |||
| 520 | div#cgit div.commit-subject { | ||
| 521 | font-weight: bold; | ||
| 522 | font-size: 125%; | ||
| 523 | margin: 1.5em 0em 0.5em 0em; | ||
| 524 | padding: 0em; | ||
| 525 | } | ||
| 526 | |||
| 527 | div#cgit div.commit-msg { | ||
| 528 | white-space: pre; | ||
| 529 | font-family: monospace; | ||
| 530 | } | ||
| 531 | |||
| 532 | div#cgit div.notes-header { | ||
| 533 | font-weight: bold; | ||
| 534 | padding-top: 1.5em; | ||
| 535 | } | ||
| 536 | |||
| 537 | div#cgit div.notes { | ||
| 538 | white-space: pre; | ||
| 539 | font-family: monospace; | ||
| 540 | border: solid 1px #ee9; | ||
| 541 | background-color: #ffd; | ||
| 542 | padding: 0.3em 2em 0.3em 1em; | ||
| 543 | float: left; | ||
| 544 | } | ||
| 545 | |||
| 546 | div#cgit div.notes-footer { | ||
| 547 | clear: left; | ||
| 548 | } | ||
| 549 | |||
| 550 | div#cgit div.diffstat-header { | ||
| 551 | font-weight: bold; | ||
| 552 | padding-top: 1.5em; | ||
| 553 | } | ||
| 554 | |||
| 555 | div#cgit table.diffstat { | ||
| 556 | border-collapse: collapse; | ||
| 557 | border: solid 1px #aaa; | ||
| 558 | background-color: #eee; | ||
| 559 | } | ||
| 560 | |||
| 561 | div#cgit table.diffstat th { | ||
| 562 | font-weight: normal; | ||
| 563 | text-align: left; | ||
| 564 | text-decoration: underline; | ||
| 565 | padding: 0.1em 1em 0.1em 0.1em; | ||
| 566 | font-size: 100%; | ||
| 567 | } | ||
| 568 | |||
| 569 | div#cgit table.diffstat td { | ||
| 570 | padding: 0.2em 0.2em 0.1em 0.1em; | ||
| 571 | font-size: 100%; | ||
| 572 | border: none; | ||
| 573 | } | ||
| 574 | |||
| 575 | div#cgit table.diffstat td.mode { | ||
| 576 | white-space: nowrap; | ||
| 577 | } | ||
| 578 | |||
| 579 | div#cgit table.diffstat td span.modechange { | ||
| 580 | padding-left: 1em; | ||
| 581 | color: red; | ||
| 582 | } | ||
| 583 | |||
| 584 | div#cgit table.diffstat td.add a { | ||
| 585 | color: green; | ||
| 586 | } | ||
| 587 | |||
| 588 | div#cgit table.diffstat td.del a { | ||
| 589 | color: red; | ||
| 590 | } | ||
| 591 | |||
| 592 | div#cgit table.diffstat td.upd a { | ||
| 593 | color: blue; | ||
| 594 | } | ||
| 595 | |||
| 596 | div#cgit table.diffstat td.graph { | ||
| 597 | width: 500px; | ||
| 598 | vertical-align: middle; | ||
| 599 | } | ||
| 600 | |||
| 601 | div#cgit table.diffstat td.graph table { | ||
| 602 | border: none; | ||
| 603 | } | ||
| 604 | |||
| 605 | div#cgit table.diffstat td.graph td { | ||
| 606 | padding: 0px; | ||
| 607 | border: 0px; | ||
| 608 | height: 7pt; | ||
| 609 | } | ||
| 610 | |||
| 611 | div#cgit table.diffstat td.graph td.add { | ||
| 612 | background-color: #5c5; | ||
| 613 | } | ||
| 614 | |||
| 615 | div#cgit table.diffstat td.graph td.rem { | ||
| 616 | background-color: #c55; | ||
| 617 | } | ||
| 618 | |||
| 619 | div#cgit div.diffstat-summary { | ||
| 620 | color: #888; | ||
| 621 | padding-top: 0.5em; | ||
| 622 | } | ||
| 623 | |||
| 624 | div#cgit table.diff { | ||
| 625 | width: 100%; | ||
| 626 | } | ||
| 627 | |||
| 628 | div#cgit table.diff td { | ||
| 629 | font-family: monospace; | ||
| 630 | white-space: pre; | ||
| 631 | } | ||
| 632 | |||
| 633 | div#cgit table.diff td div.head { | ||
| 634 | font-weight: bold; | ||
| 635 | margin-top: 1em; | ||
| 636 | color: black; | ||
| 637 | } | ||
| 638 | |||
| 639 | div#cgit table.diff td div.hunk { | ||
| 640 | color: #009; | ||
| 641 | } | ||
| 642 | |||
| 643 | div#cgit table.diff td div.add { | ||
| 644 | color: green; | ||
| 645 | } | ||
| 646 | |||
| 647 | div#cgit table.diff td div.del { | ||
| 648 | color: red; | ||
| 649 | } | ||
| 650 | |||
| 651 | div#cgit .oid { | ||
| 652 | font-family: monospace; | ||
| 653 | font-size: 90%; | ||
| 654 | } | ||
| 655 | |||
| 656 | div#cgit .left { | ||
| 657 | text-align: left; | ||
| 658 | } | ||
| 659 | |||
| 660 | div#cgit .right { | ||
| 661 | text-align: right; | ||
| 662 | } | ||
| 663 | |||
| 664 | div#cgit table.list td.reposection { | ||
| 665 | font-style: italic; | ||
| 666 | color: #888; | ||
| 667 | } | ||
| 668 | |||
| 669 | div#cgit a.button { | ||
| 670 | font-size: 80%; | ||
| 671 | padding: 0em 0.5em; | ||
| 672 | } | ||
| 673 | |||
| 674 | div#cgit a.primary { | ||
| 675 | font-size: 100%; | ||
| 676 | } | ||
| 677 | |||
| 678 | div#cgit a.secondary { | ||
| 679 | font-size: 90%; | ||
| 680 | } | ||
| 681 | |||
| 682 | div#cgit td.toplevel-repo { | ||
| 683 | |||
| 684 | } | ||
| 685 | |||
| 686 | div#cgit table.list td.sublevel-repo { | ||
| 687 | padding-left: 1.5em; | ||
| 688 | } | ||
| 689 | |||
| 690 | div#cgit ul.pager { | ||
| 691 | list-style-type: none; | ||
| 692 | text-align: center; | ||
| 693 | margin: 1em 0em 0em 0em; | ||
| 694 | padding: 0; | ||
| 695 | } | ||
| 696 | |||
| 697 | div#cgit ul.pager li { | ||
| 698 | display: inline-block; | ||
| 699 | margin: 0.25em 0.5em; | ||
| 700 | } | ||
| 701 | |||
| 702 | div#cgit ul.pager a { | ||
| 703 | color: #777; | ||
| 704 | } | ||
| 705 | |||
| 706 | div#cgit ul.pager .current { | ||
| 707 | font-weight: bold; | ||
| 708 | } | ||
| 709 | |||
| 710 | div#cgit span.age-mins { | ||
| 711 | font-weight: bold; | ||
| 712 | color: #080; | ||
| 713 | } | ||
| 714 | |||
| 715 | div#cgit span.age-hours { | ||
| 716 | color: #080; | ||
| 717 | } | ||
| 718 | |||
| 719 | div#cgit span.age-days { | ||
| 720 | color: #040; | ||
| 721 | } | ||
| 722 | |||
| 723 | div#cgit span.age-weeks { | ||
| 724 | color: #444; | ||
| 725 | } | ||
| 726 | |||
| 727 | div#cgit span.age-months { | ||
| 728 | color: #888; | ||
| 729 | } | ||
| 730 | |||
| 731 | div#cgit span.age-years { | ||
| 732 | color: #bbb; | ||
| 733 | } | ||
| 734 | |||
| 735 | div#cgit span.insertions { | ||
| 736 | color: #080; | ||
| 737 | } | ||
| 738 | |||
| 739 | div#cgit span.deletions { | ||
| 740 | color: #800; | ||
| 741 | } | ||
| 742 | |||
| 743 | div#cgit div.footer { | ||
| 744 | margin-top: 0.5em; | ||
| 745 | text-align: center; | ||
| 746 | font-size: 80%; | ||
| 747 | color: #ccc; | ||
| 748 | } | ||
| 749 | |||
| 750 | div#cgit div.footer a { | ||
| 751 | color: #ccc; | ||
| 752 | text-decoration: none; | ||
| 753 | } | ||
| 754 | |||
| 755 | div#cgit div.footer a:hover { | ||
| 756 | text-decoration: underline; | ||
| 757 | } | ||
| 758 | |||
| 759 | div#cgit a.branch-deco { | ||
| 760 | color: #000; | ||
| 761 | margin: 0px 0.5em; | ||
| 762 | padding: 0px 0.25em; | ||
| 763 | background-color: #88ff88; | ||
| 764 | border: solid 1px #007700; | ||
| 765 | border-radius: 2px; | ||
| 766 | } | ||
| 767 | |||
| 768 | div#cgit a.tag-deco { | ||
| 769 | color: #000; | ||
| 770 | margin: 0px 0.5em; | ||
| 771 | padding: 0px 0.25em; | ||
| 772 | background-color: #ffff88; | ||
| 773 | border: solid 1px #777700; | ||
| 774 | border-radius: 2px; | ||
| 775 | } | ||
| 776 | |||
| 777 | div#cgit a.tag-annotated-deco { | ||
| 778 | color: #000; | ||
| 779 | margin: 0px 0.5em; | ||
| 780 | padding: 0px 0.25em; | ||
| 781 | background-color: #ffcc88; | ||
| 782 | border: solid 1px #777700; | ||
| 783 | border-radius: 2px; | ||
| 784 | } | ||
| 785 | |||
| 786 | div#cgit a.remote-deco { | ||
| 787 | color: #000; | ||
| 788 | margin: 0px 0.5em; | ||
| 789 | padding: 0px 0.25em; | ||
| 790 | background-color: #ccccff; | ||
| 791 | border: solid 1px #000077; | ||
| 792 | border-radius: 2px; | ||
| 793 | } | ||
| 794 | |||
| 795 | div#cgit a.deco { | ||
| 796 | color: #000; | ||
| 797 | margin: 0px 0.5em; | ||
| 798 | padding: 0px 0.25em; | ||
| 799 | background-color: #ff8888; | ||
| 800 | border: solid 1px #770000; | ||
| 801 | border-radius: 2px; | ||
| 802 | } | ||
| 803 | |||
| 804 | div#cgit div.commit-subject a.branch-deco, | ||
| 805 | div#cgit div.commit-subject a.tag-deco, | ||
| 806 | div#cgit div.commit-subject a.tag-annotated-deco, | ||
| 807 | div#cgit div.commit-subject a.remote-deco, | ||
| 808 | div#cgit div.commit-subject a.deco { | ||
| 809 | margin-left: 1em; | ||
| 810 | font-size: 100%; | ||
| 811 | } | ||
| 812 | |||
| 813 | div#cgit table.stats { | ||
| 814 | border: solid 1px black; | ||
| 815 | border-collapse: collapse; | ||
| 816 | } | ||
| 817 | |||
| 818 | div#cgit table.stats th { | ||
| 819 | text-align: left; | ||
| 820 | padding: 1px 0.5em; | ||
| 821 | background-color: #eee; | ||
| 822 | border: solid 1px black; | ||
| 823 | } | ||
| 824 | |||
| 825 | div#cgit table.stats td { | ||
| 826 | text-align: right; | ||
| 827 | padding: 1px 0.5em; | ||
| 828 | border: solid 1px black; | ||
| 829 | } | ||
| 830 | |||
| 831 | div#cgit table.stats td.total { | ||
| 832 | font-weight: bold; | ||
| 833 | text-align: left; | ||
| 834 | } | ||
| 835 | |||
| 836 | div#cgit table.stats td.sum { | ||
| 837 | color: #c00; | ||
| 838 | font-weight: bold; | ||
| 839 | /* background-color: #eee; */ | ||
| 840 | } | ||
| 841 | |||
| 842 | div#cgit table.stats td.left { | ||
| 843 | text-align: left; | ||
| 844 | } | ||
| 845 | |||
| 846 | div#cgit table.vgraph { | ||
| 847 | border-collapse: separate; | ||
| 848 | border: solid 1px black; | ||
| 849 | height: 200px; | ||
| 850 | } | ||
| 851 | |||
| 852 | div#cgit table.vgraph th { | ||
| 853 | background-color: #eee; | ||
| 854 | font-weight: bold; | ||
| 855 | border: solid 1px white; | ||
| 856 | padding: 1px 0.5em; | ||
| 857 | } | ||
| 858 | |||
| 859 | div#cgit table.vgraph td { | ||
| 860 | vertical-align: bottom; | ||
| 861 | padding: 0px 10px; | ||
| 862 | } | ||
| 863 | |||
| 864 | div#cgit table.vgraph div.bar { | ||
| 865 | background-color: #eee; | ||
| 866 | } | ||
| 867 | |||
| 868 | div#cgit table.hgraph { | ||
| 869 | border: solid 1px black; | ||
| 870 | width: 800px; | ||
| 871 | } | ||
| 872 | |||
| 873 | div#cgit table.hgraph th { | ||
| 874 | background-color: #eee; | ||
| 875 | font-weight: bold; | ||
| 876 | border: solid 1px black; | ||
| 877 | padding: 1px 0.5em; | ||
| 878 | } | ||
| 879 | |||
| 880 | div#cgit table.hgraph td { | ||
| 881 | vertical-align: middle; | ||
| 882 | padding: 2px 2px; | ||
| 883 | } | ||
| 884 | |||
| 885 | div#cgit table.hgraph div.bar { | ||
| 886 | background-color: #eee; | ||
| 887 | height: 1em; | ||
| 888 | } | ||
| 889 | |||
| 890 | div#cgit table.ssdiff { | ||
| 891 | width: 100%; | ||
| 892 | } | ||
| 893 | |||
| 894 | div#cgit table.ssdiff td { | ||
| 895 | font-size: 100%; | ||
| 896 | font-family: monospace; | ||
| 897 | white-space: pre; | ||
| 898 | padding: 1px 4px 1px 4px; | ||
| 899 | border-left: solid 1px #aaa; | ||
| 900 | border-right: solid 1px #aaa; | ||
| 901 | } | ||
| 902 | |||
| 903 | div#cgit table.ssdiff td.add { | ||
| 904 | color: black; | ||
| 905 | background: #cfc; | ||
| 906 | min-width: 50%; | ||
| 907 | } | ||
| 908 | |||
| 909 | div#cgit table.ssdiff td.add_dark { | ||
| 910 | color: black; | ||
| 911 | background: #aca; | ||
| 912 | min-width: 50%; | ||
| 913 | } | ||
| 914 | |||
| 915 | div#cgit table.ssdiff span.add { | ||
| 916 | background: #cfc; | ||
| 917 | font-weight: bold; | ||
| 918 | } | ||
| 919 | |||
| 920 | div#cgit table.ssdiff td.del { | ||
| 921 | color: black; | ||
| 922 | background: #fcc; | ||
| 923 | min-width: 50%; | ||
| 924 | } | ||
| 925 | |||
| 926 | div#cgit table.ssdiff td.del_dark { | ||
| 927 | color: black; | ||
| 928 | background: #caa; | ||
| 929 | min-width: 50%; | ||
| 930 | } | ||
| 931 | |||
| 932 | div#cgit table.ssdiff span.del { | ||
| 933 | background: #fcc; | ||
| 934 | font-weight: bold; | ||
| 935 | } | ||
| 936 | |||
| 937 | div#cgit table.ssdiff td.changed { | ||
| 938 | color: black; | ||
| 939 | background: #ffc; | ||
| 940 | min-width: 50%; | ||
| 941 | } | ||
| 942 | |||
| 943 | div#cgit table.ssdiff td.changed_dark { | ||
| 944 | color: black; | ||
| 945 | background: #cca; | ||
| 946 | min-width: 50%; | ||
| 947 | } | ||
| 948 | |||
| 949 | div#cgit table.ssdiff td.lineno { | ||
| 950 | color: black; | ||
| 951 | background: #eee; | ||
| 952 | text-align: right; | ||
| 953 | width: 3em; | ||
| 954 | min-width: 3em; | ||
| 955 | } | ||
| 956 | |||
| 957 | div#cgit table.ssdiff td.hunk { | ||
| 958 | color: black; | ||
| 959 | background: #ccf; | ||
| 960 | border-top: solid 1px #aaa; | ||
| 961 | border-bottom: solid 1px #aaa; | ||
| 962 | } | ||
| 963 | |||
| 964 | div#cgit table.ssdiff td.head { | ||
| 965 | border-top: solid 1px #aaa; | ||
| 966 | border-bottom: solid 1px #aaa; | ||
| 967 | } | ||
| 968 | |||
| 969 | div#cgit table.ssdiff td.head div.head { | ||
| 970 | font-weight: bold; | ||
| 971 | color: black; | ||
| 972 | } | ||
| 973 | |||
| 974 | div#cgit table.ssdiff td.foot { | ||
| 975 | border-top: solid 1px #aaa; | ||
| 976 | border-left: none; | ||
| 977 | border-right: none; | ||
| 978 | border-bottom: none; | ||
| 979 | } | ||
| 980 | |||
| 981 | div#cgit table.ssdiff td.space { | ||
| 982 | border: none; | ||
| 983 | } | ||
| 984 | |||
| 985 | div#cgit table.ssdiff td.space div { | ||
| 986 | min-height: 3em; | ||
| 987 | } | ||
diff --git a/custom/cgit.png b/custom/cgit.png new file mode 100644 index 0000000..e9e1dc5 --- /dev/null +++ b/custom/cgit.png | |||
| Binary files differ | |||
diff --git a/custom/favicon.png b/custom/favicon.png new file mode 100644 index 0000000..fca1e66 --- /dev/null +++ b/custom/favicon.png | |||
| Binary files differ | |||
diff --git a/custom/footer.html b/custom/footer.html new file mode 100644 index 0000000..4bda50b --- /dev/null +++ b/custom/footer.html | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | <p align="center"> | ||
| 2 | Generated with <a href="https://git.zx2c4.com/cgit/about">cgit</a> - | ||
| 3 | Back to <a href="https://sebastiano.tronto.net">sebastiano.tronto.net</a> | ||
| 4 | </p> | ||
diff --git a/custom/head.html b/custom/head.html new file mode 100644 index 0000000..44dca77 --- /dev/null +++ b/custom/head.html | |||
| @@ -0,0 +1 @@ | |||
| <meta name="viewport" content="width=device-width initial-scale=1.0"/> | |||
diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..6db7961 --- /dev/null +++ b/deploy.sh | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | # Usage: deploy [hostname] | ||
| 4 | # If no hostname is provided, push to localhost. | ||
| 5 | # Assumes Alpine Linux + Lighttpd default directory structure. | ||
| 6 | |||
| 7 | if [ -n "$1" ]; then | ||
| 8 | host="scp://$1/" | ||
| 9 | cp=scp | ||
| 10 | else | ||
| 11 | host="" | ||
| 12 | cp=cp | ||
| 13 | fi | ||
| 14 | |||
| 15 | $cp cgitrc "$host"/etc/ | ||
| 16 | $cp -r custom "$host"/usr/share/webapps/cgit/ | ||
diff --git a/lighttpd.conf b/lighttpd.conf new file mode 100644 index 0000000..43d6c00 --- /dev/null +++ b/lighttpd.conf | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | # Minimal lighttpd configuration for local testing | ||
| 2 | |||
| 3 | server.document-root = "/usr/share/webapps/cgit" | ||
| 4 | server.port = 8080 | ||
| 5 | server.bind = "localhost" | ||
| 6 | server.username = "sebastiano" | ||
| 7 | server.groupname = "sebastiano" | ||
| 8 | |||
| 9 | server.modules = ( "mod_cgi", "mod_rewrite", "mod_setenv" ) | ||
| 10 | |||
| 11 | mimetype.assign = ( | ||
| 12 | ".css" => "text/css", | ||
| 13 | ".png" => "image/png", | ||
| 14 | ".ico" => "image/x-icon", | ||
| 15 | ) | ||
| 16 | |||
| 17 | cgi.assign = ( "cgit.cgi" => "" ) | ||
| 18 | setenv.add-environment = ( "CGIT_CONFIG" => "/etc/cgitrc" ) | ||
| 19 | |||
| 20 | url.rewrite-once = ( | ||
| 21 | "^/custom/(.*)$" => "/custom/$1", | ||
| 22 | "^/(cgit\.css|cgit\.js)(\?.*)?$" => "/$1", | ||
| 23 | "^/([^?/]+/[^?]*)?(?:\?(.*))?$" => "/cgit.cgi?url=$1&$2", | ||
| 24 | ) | ||
