changeset 3:8e515a52c7a9

add:Cgit File
author Pluto <meokcin@gmail.com>
date Tue, 03 Sep 2024 17:14:28 +0800
parents c8c80b5286b1
children 4977c0f8b002
files CGIT/about.html CGIT/cgit.css CGIT/cgit.nginx CGIT/cgitrc CGIT/filters/email-libravatar-korg.lua CGIT/footer.html CGIT/git-bare CGIT/git-http-backend.conf CGIT/head-include.html CGIT/post-receive.agefile
diffstat 10 files changed, 1302 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CGIT/about.html	Tue Sep 03 17:14:28 2024 +0800
@@ -0,0 +1,2 @@
+<p><strong>Here is Charon's personal git server.</strong></p>
+<p>I host my personal projects here and you can clone the source code of any project, if you want to commit patches or changes here, feel free to <a href="mailto:meokcin@gmail.com">send me an e-mail</a>.</p><p><strong>Service composition:</strong></p><ul><li><a href="https://www.debian.org/">Debian GNU/Linux</a> - Lovely Linux distribution</li><li><a href="https://git.zx2c4.com/cgit/about/">cgit</a> - A hyperfast web frontend for git repositories written in C.</li><li><a href="https://nginx.org/">Nginx</a> - The web server</li><li><a href="https://www.cloudflare.com/">Cloudflare</a> - Secure and fast DNS resolution and free global CDN acceleration</li></ul>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CGIT/cgit.css	Tue Sep 03 17:14:28 2024 +0800
@@ -0,0 +1,955 @@
+:root {
+  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
+    'Liberation Mono', 'Courier New', monospace;
+  --body-bg: #faf6f2;
+  --hover-bg: #f4d2c1;
+  --table-lighter-bg: #eee;
+  --border-color: #8c7851;
+  --a-tag-color: #020826;
+  --a-hover-color: #020826;
+}
+body {
+  background: var(--body-bg);
+}
+div#cgit {
+  padding: 0em;
+  margin: 0em;
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
+    Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', Helvetica, Arial,
+    'Noto Sans SC', 'Microsoft YaHei', 'WenQuanYi Micro Hei', 'PingFang SC',
+    'Source Han Sans SC', 'Hiragino Sans GB', 'Hiragino Sans', 'STHeitiSC-Light',
+    'SimSun', 'WenQuanYi Zen Hei', 'LiHei Pro Medium', 'STXihei',
+    'Noto Sans CJK SC', 'Meiryo UI', 'Malgun Gothic', sans-serif,
+    'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji',
+    'Android Emoji', 'EmojiSymbols', 'EmojiOne';
+  font-size: 10pt;
+  color: #171717;
+  background: var(--body-bg);
+  padding: 4px;
+}
+
+div#cgit a {
+  color: var(--a-tag-color);
+  text-decoration: none;
+}
+
+div#cgit a:hover {
+  text-decoration: underline;
+}
+
+div#cgit table {
+  border-collapse: collapse;
+}
+
+div#cgit table#header {
+  width: 100%;
+  margin-bottom: 1em;
+}
+
+div#cgit table#header td.logo {
+  width: 96px;
+  vertical-align: top;
+}
+
+div#cgit table#header td.main {
+  font-size: 250%;
+  padding-left: 10px;
+  white-space: nowrap;
+}
+
+div#cgit table#header td.main a {
+  color: #000;
+}
+
+div#cgit table#header td.form {
+  text-align: right;
+  vertical-align: bottom;
+  padding-right: 1em;
+  padding-bottom: 2px;
+  white-space: nowrap;
+}
+
+div#cgit table#header td.form form,
+div#cgit table#header td.form input,
+div#cgit table#header td.form select {
+  font-size: 90%;
+}
+
+div#cgit table#header td.sub {
+  color: #777;
+  border-top: solid 1px var(--border-color);
+  padding-left: 10px;
+}
+
+div#cgit table.tabs {
+  border-bottom: solid 3px var(--border-color);
+  border-collapse: collapse;
+  margin-top: 2em;
+  margin-bottom: 0px;
+  width: 100%;
+}
+
+div#cgit table.tabs td {
+  padding: 0px 1em;
+  vertical-align: bottom;
+}
+
+div#cgit table.tabs td a {
+  padding: 2px 0.75em;
+  color: #777;
+  font-size: 110%;
+}
+
+div#cgit table.tabs td a.active {
+  color: #fffffe;
+  background-color: var(--border-color);
+}
+
+div#cgit table.tabs a[href^="http://"]:after, div#cgit table.tabs a[href^="https://"]:after
+{
+  content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfgAhcJDQY+gm2TAAAAHWlUWHRDb21tZW50AAAAAABDcmVhdGVkIHdpdGggR0lNUGQuZQcAAABbSURBVAhbY2BABs4MU4CwhYHBh2Erww4wrGFQZHjI8B8IgUIscJWyDHcggltQhI4zGDCcRwhChPggHIggP1QoAVmQkSETrGoHsiAEsACtBYN0oDAMbgU6EBcAAL2eHUt4XUU4AAAAAElFTkSuQmCC);
+  opacity: 0.5;
+  margin: 0 0 0 5px;
+}
+
+div#cgit table.tabs td.form {
+  text-align: right;
+}
+
+div#cgit table.tabs td.form form {
+  padding-bottom: 2px;
+  font-size: 90%;
+  white-space: nowrap;
+}
+
+div#cgit table.tabs td.form input,
+div#cgit table.tabs td.form select {
+  font-size: 90%;
+}
+
+div#cgit div.path {
+  margin: 0px;
+  padding: 5px 2em 2px 2em;
+  color: #000;
+  background-color: var(--hover-bg);
+}
+
+div#cgit div.content {
+  margin: 0px;
+  padding: 2em;
+  border-bottom: solid 3px var(--border-color);
+}
+
+div#cgit table.list {
+  width: 100%;
+  border: none;
+  border-collapse: collapse;
+}
+
+div#cgit table.list tr {
+  background: var(--body-bg);
+}
+
+div#cgit table.list tr.logheader {
+  background: var(--hover-bg);
+}
+
+div#cgit table.list tr:nth-child(even) {
+  background: var(--table-lighter-bg);
+}
+
+div#cgit table.list tr:nth-child(odd) {
+  background: var(--body-bg);
+}
+
+div#cgit table.list tr:hover {
+  background: var(--hover-bg);
+}
+
+div#cgit table.list tr.nohover {
+  background: var(--body-bg);
+}
+
+div#cgit table.list tr.nohover:hover {
+  background: var(--body-bg);
+}
+
+div#cgit table.list tr.nohover-highlight:hover:nth-child(even) {
+  background: var(--table-lighter-bg);
+}
+
+div#cgit table.list tr.nohover-highlight:hover:nth-child(odd) {
+  background: var(--body-bg);
+}
+
+div#cgit table.list th {
+  font-weight: bold;
+  /* color: #888;
+        border-top: dashed 1px #888;
+        border-bottom: dashed 1px #888;
+        */
+  padding: 0.1em 0.5em 0.05em 0.5em;
+  vertical-align: baseline;
+}
+
+div#cgit table.list td {
+  border: none;
+  padding: 0.1em 0.5em 0.1em 0.5em;
+}
+
+div#cgit table.list td.commitgraph {
+  font-family: var(--font-mono);
+  white-space: pre;
+}
+
+div#cgit table.list td.commitgraph .column1 {
+  color: #a00;
+}
+
+div#cgit table.list td.commitgraph .column2 {
+  color: #0a0;
+}
+
+div#cgit table.list td.commitgraph .column3 {
+  color: #aa0;
+}
+
+div#cgit table.list td.commitgraph .column4 {
+  color: #00a;
+}
+
+div#cgit table.list td.commitgraph .column5 {
+  color: #a0a;
+}
+
+div#cgit table.list td.commitgraph .column6 {
+  color: #0aa;
+}
+
+div#cgit table.list td.logsubject {
+  font-family: var(--font-mono);
+  font-weight: bold;
+}
+
+div#cgit table.list td.logmsg {
+  font-family: var(--font-mono);
+  white-space: pre;
+  padding: 0 0.5em;
+}
+
+div#cgit table.list td a {
+  color: black;
+}
+
+div#cgit table.list td a.ls-dir {
+  font-weight: bold;
+  color: var(--a-hover-color);
+}
+
+div#cgit table.list td a:hover {
+  color: var(--a-hover-color);
+}
+
+div#cgit img {
+  border: none;
+}
+
+div#cgit input#switch-btn {
+  margin: 2px 0px 0px 0px;
+}
+
+div#cgit td#sidebar input.txt {
+  width: 100%;
+  margin: 2px 0px 0px 0px;
+}
+
+div#cgit table#grid {
+  margin: 0px;
+}
+
+div#cgit td#content {
+  vertical-align: top;
+  padding: 1em 2em 1em 1em;
+  border: none;
+}
+
+div#cgit div#summary {
+  vertical-align: top;
+  margin-bottom: 1em;
+}
+
+div#cgit table#downloads {
+  float: right;
+  border-collapse: collapse;
+  border: solid 1px #777;
+  margin-left: 0.5em;
+  margin-bottom: 0.5em;
+}
+
+div#cgit table#downloads th {
+  background-color: var(--border-color);
+}
+
+div#cgit div#blob {
+  border: solid 1px black;
+}
+
+div#cgit div.error {
+  color: red;
+  font-weight: bold;
+  margin: 1em 2em;
+}
+
+div#cgit a.ls-blob,
+div#cgit a.ls-dir,
+div#cgit .ls-mod {
+  font-family: var(--font-mono);
+}
+
+div#cgit td.ls-size {
+  text-align: right;
+  font-family: var(--font-mono);
+  width: 10em;
+}
+
+div#cgit td.ls-mode {
+  font-family: var(--font-mono);
+  width: 10em;
+}
+
+div#cgit table.blob {
+  margin-top: 0.5em;
+  border-top: solid 1px black;
+}
+
+div#cgit table.blob td.hashes,
+div#cgit table.blob td.lines {
+  margin: 0;
+  padding: 0 0 0 0.5em;
+  vertical-align: top;
+  color: black;
+}
+
+div#cgit table.blob td.linenumbers {
+  margin: 0;
+  padding: 0 0.5em 0 0.5em;
+  vertical-align: top;
+  text-align: right;
+  border-right: 1px solid gray;
+}
+
+div#cgit table.blob pre {
+  padding: 0;
+  margin: 0;
+}
+
+div#cgit table.blob td.linenumbers a,
+div#cgit table.ssdiff td.lineno a {
+  color: gray;
+  text-align: right;
+  text-decoration: none;
+}
+
+div#cgit table.blob td.linenumbers a:hover,
+div#cgit table.ssdiff td.lineno a:hover {
+  color: black;
+}
+
+div#cgit table.blame td.hashes,
+div#cgit table.blame td.lines,
+div#cgit table.blame td.linenumbers {
+  padding: 0;
+}
+
+div#cgit table.blame td.hashes div.alt,
+div#cgit table.blame td.lines div.alt {
+  padding: 0 0.5em 0 0.5em;
+}
+
+div#cgit table.blame td.linenumbers div.alt {
+  padding: 0 0.5em 0 0;
+}
+
+div#cgit table.blame div.alt:nth-child(even) {
+  background: var(--hover-bg);
+}
+
+div#cgit table.blame div.alt:nth-child(odd) {
+  background: var(--body-bg);
+}
+
+div#cgit table.blame td.lines > div {
+  position: relative;
+}
+
+div#cgit table.blame td.lines > div > pre {
+  padding: 0 0 0 0.5em;
+  position: absolute;
+  top: 0;
+}
+
+div#cgit table.blame .oid {
+  font-size: 100%;
+}
+
+div#cgit table.bin-blob {
+  margin-top: 0.5em;
+  border: solid 1px black;
+}
+
+div#cgit table.bin-blob th {
+  font-family: var(--font-mono);
+  white-space: pre;
+  border: solid 1px #777;
+  padding: 0.5em 1em;
+}
+
+div#cgit table.bin-blob td {
+  font-family: var(--font-mono);
+  white-space: pre;
+  border-left: solid 1px #777;
+  padding: 0em 1em;
+}
+
+div#cgit table.nowrap td {
+  white-space: nowrap;
+}
+
+div#cgit table.commit-info {
+  border-collapse: collapse;
+  margin-top: 1.5em;
+}
+
+div#cgit div.cgit-panel {
+  float: right;
+  margin-top: 1.5em;
+}
+
+div#cgit div.cgit-panel table {
+  border-collapse: collapse;
+  border: solid 1px #aaa;
+  background-color: var(--hover-bg);
+}
+
+div#cgit div.cgit-panel th {
+  text-align: center;
+}
+
+div#cgit div.cgit-panel td {
+  padding: 0.25em 0.5em;
+}
+
+div#cgit div.cgit-panel td.label {
+  padding-right: 0.5em;
+}
+
+div#cgit div.cgit-panel td.ctrl {
+  padding-left: 0.5em;
+}
+
+div#cgit table.commit-info th {
+  vertical-align: center;
+  text-align: center;
+  font-weight: 600;
+  padding: 0.2em 1em 0.2em 1em;
+  border: 1px solid var(--border-color);
+}
+
+div#cgit table.commit-info td {
+  font-weight: normal;
+  border: 1px solid var(--border-color);
+  padding: 0.2em 1em 0.2em 1em;
+}
+
+div#cgit div.commit-subject {
+  font-weight: bold;
+  font-size: 125%;
+  margin: 1.5em 0em 0.5em 0em;
+  padding: 0em;
+}
+
+div#cgit div.commit-msg {
+  white-space: pre;
+  font-family: var(--font-mono);
+}
+
+div#cgit div.notes-header {
+  font-weight: bold;
+  padding-top: 1.5em;
+}
+
+div#cgit div.notes {
+  white-space: pre;
+  font-family: var(--font-mono);
+  border: solid 1px #ee9;
+  background-color: #ffd;
+  padding: 0.3em 2em 0.3em 1em;
+  float: left;
+}
+
+div#cgit div.notes-footer {
+  clear: left;
+}
+
+div#cgit div.diffstat-header {
+  font-weight: bold;
+  padding-top: 1.5em;
+}
+
+div#cgit table.diffstat {
+  border-collapse: collapse;
+  border: solid 1px #aaa;
+  background-color: var(--hover-bg);
+}
+
+div#cgit table.diffstat th {
+  font-weight: normal;
+  text-align: left;
+  text-decoration: underline;
+  padding: 0.1em 1em 0.1em 0.1em;
+  font-size: 100%;
+}
+
+div#cgit table.diffstat td {
+  padding: 0.2em 0.2em 0.1em 0.1em;
+  font-size: 100%;
+  border: none;
+}
+
+div#cgit table.diffstat td.mode {
+  white-space: nowrap;
+}
+
+div#cgit table.diffstat td span.modechange {
+  padding-left: 1em;
+  color: red;
+}
+
+div#cgit table.diffstat td.add a {
+  color: green;
+}
+
+div#cgit table.diffstat td.del a {
+  color: red;
+}
+
+div#cgit table.diffstat td.upd a {
+  color: var(--a-tag-color);
+}
+
+div#cgit table.diffstat td.graph {
+  width: 500px;
+  vertical-align: middle;
+}
+
+div#cgit table.diffstat td.graph table {
+  border: none;
+}
+
+div#cgit table.diffstat td.graph td {
+  padding: 0px;
+  border: 0px;
+  height: 7pt;
+}
+
+div#cgit table.diffstat td.graph td.add {
+  background-color: #5c5;
+}
+
+div#cgit table.diffstat td.graph td.rem {
+  background-color: #c55;
+}
+
+div#cgit div.diffstat-summary {
+  color: #888;
+  padding-top: 0.5em;
+}
+
+div#cgit table.diff {
+  width: 100%;
+}
+
+div#cgit table.diff td {
+  font-family: var(--font-mono);
+  white-space: pre;
+}
+
+div#cgit table.diff td div.head {
+  font-weight: bold;
+  margin-top: 1em;
+  color: black;
+}
+
+div#cgit table.diff td div.hunk {
+  color: #009;
+}
+
+div#cgit table.diff td div.add {
+  color: green;
+}
+
+div#cgit table.diff td div.del {
+  color: red;
+}
+
+div#cgit .oid {
+  font-family: var(--font-mono);
+  font-size: 90%;
+}
+
+div#cgit .left {
+  text-align: left;
+}
+
+div#cgit .right {
+  text-align: right;
+}
+
+div#cgit table.list td.reposection {
+  font-style: italic;
+  color: #888;
+}
+
+div#cgit a.button {
+  font-size: 80%;
+  padding: 0em 0.5em;
+}
+
+div#cgit a.primary {
+  font-size: 100%;
+}
+
+div#cgit a.secondary {
+  font-size: 90%;
+}
+
+div#cgit td.toplevel-repo {
+}
+
+div#cgit table.list td.sublevel-repo {
+  padding-left: 1.5em;
+}
+
+div#cgit ul.pager {
+  list-style-type: none;
+  text-align: center;
+  margin: 1em 0em 0em 0em;
+  padding: 0;
+}
+
+div#cgit ul.pager li {
+  display: inline-block;
+  margin: 0.25em 0.5em;
+}
+
+div#cgit ul.pager a {
+  color: #777;
+}
+
+div#cgit ul.pager .current {
+  font-weight: bold;
+}
+
+div#cgit span.age-mins {
+  font-weight: bold;
+  color: #080;
+}
+
+div#cgit span.age-hours {
+  color: #080;
+}
+
+div#cgit span.age-days {
+  color: #040;
+}
+
+div#cgit span.age-weeks {
+  color: #444;
+}
+
+div#cgit span.age-months {
+  color: #888;
+}
+
+div#cgit span.age-years {
+  color: #bbb;
+}
+
+div#cgit span.insertions {
+  color: #080;
+}
+
+div#cgit span.deletions {
+  color: #800;
+}
+
+div#cgit div.footer {
+  margin-top: 0.5em;
+  text-align: center;
+  font-size: 80%;
+  color: var(--border-color);
+}
+
+div#cgit div.footer a {
+  color: var(--border-color);
+  text-decoration: none;
+}
+
+div#cgit div.footer a:hover {
+  text-decoration: none;
+}
+
+div#cgit a.branch-deco {
+  color: #000;
+  margin: 0px 0.5em;
+  padding: 0px 0.25em;
+  background-color: #6ddc6d;
+  border: solid 1px #007700;
+}
+
+div#cgit a.tag-deco {
+  color: #000;
+  margin: 0px 0.5em;
+  padding: 0px 0.25em;
+  background-color: #ffff88;
+  border: solid 1px #777700;
+}
+
+div#cgit a.tag-annotated-deco {
+  color: #000;
+  margin: 0px 0.5em;
+  padding: 0px 0.25em;
+  background-color: #ffcc88;
+  border: solid 1px #777700;
+}
+
+div#cgit a.remote-deco {
+  color: #000;
+  margin: 0px 0.5em;
+  padding: 0px 0.25em;
+  background-color: var(--border-color) cff;
+  border: solid 1px #000077;
+}
+
+div#cgit a.deco {
+  color: #000;
+  margin: 0px 0.5em;
+  padding: 0px 0.25em;
+  background-color: #ff6e6c;
+  border: solid 1px #770000;
+}
+
+div#cgit div.commit-subject a.branch-deco,
+div#cgit div.commit-subject a.tag-deco,
+div#cgit div.commit-subject a.tag-annotated-deco,
+div#cgit div.commit-subject a.remote-deco,
+div#cgit div.commit-subject a.deco {
+  margin-left: 1em;
+  font-size: 75%;
+}
+
+div#cgit table.stats {
+  border: solid 1px black;
+  border-collapse: collapse;
+}
+
+div#cgit table.stats th {
+  text-align: left;
+  padding: 1px 0.5em;
+  background-color: var(--hover-bg);
+  border: solid 1px black;
+}
+
+div#cgit table.stats td {
+  text-align: right;
+  padding: 1px 0.5em;
+  border: solid 1px black;
+}
+
+div#cgit table.stats td.total {
+  font-weight: bold;
+  text-align: left;
+}
+
+div#cgit table.stats td.sum {
+  color: #c00;
+  font-weight: bold;
+  /*      background-color: var(--hover-bg); */
+}
+
+div#cgit table.stats td.left {
+  text-align: left;
+}
+
+div#cgit table.vgraph {
+  border-collapse: separate;
+  border: solid 1px black;
+  height: 200px;
+}
+
+div#cgit table.vgraph th {
+  background-color: var(--hover-bg);
+  font-weight: bold;
+  border: solid 1px white;
+  padding: 1px 0.5em;
+}
+
+div#cgit table.vgraph td {
+  vertical-align: bottom;
+  padding: 0px 10px;
+}
+
+div#cgit table.vgraph div.bar {
+  background-color: var(--hover-bg);
+}
+
+div#cgit table.hgraph {
+  border: solid 1px black;
+  width: 800px;
+}
+
+div#cgit table.hgraph th {
+  background-color: var(--hover-bg);
+  font-weight: bold;
+  border: solid 1px black;
+  padding: 1px 0.5em;
+}
+
+div#cgit table.hgraph td {
+  vertical-align: middle;
+  padding: 2px 2px;
+}
+
+div#cgit table.hgraph div.bar {
+  background-color: var(--hover-bg);
+  height: 1em;
+}
+
+div#cgit table.ssdiff {
+  width: 100%;
+}
+
+div#cgit table.ssdiff td {
+  font-size: 75%;
+  font-family: var(--font-mono);
+  white-space: pre;
+  padding: 1px 4px 1px 4px;
+  border-left: solid 1px #aaa;
+  border-right: solid 1px #aaa;
+}
+
+div#cgit table.ssdiff td.add {
+  color: black;
+  background: #cfc;
+  min-width: 50%;
+}
+
+div#cgit table.ssdiff td.add_dark {
+  color: black;
+  background: #aca;
+  min-width: 50%;
+}
+
+div#cgit table.ssdiff span.add {
+  background: #cfc;
+  font-weight: bold;
+}
+
+div#cgit table.ssdiff td.del {
+  color: black;
+  background: #fcc;
+  min-width: 50%;
+}
+
+div#cgit table.ssdiff td.del_dark {
+  color: black;
+  background: #caa;
+  min-width: 50%;
+}
+
+div#cgit table.ssdiff span.del {
+  background: #fcc;
+  font-weight: bold;
+}
+
+div#cgit table.ssdiff td.changed {
+  color: black;
+  background: #ffc;
+  min-width: 50%;
+}
+
+div#cgit table.ssdiff td.changed_dark {
+  color: black;
+  background: #cca;
+  min-width: 50%;
+}
+
+div#cgit table.ssdiff td.lineno {
+  color: black;
+  background: var(--hover-bg);
+  text-align: right;
+  width: 3em;
+  min-width: 3em;
+}
+
+div#cgit table.ssdiff td.hunk {
+  color: black;
+  background: #ccf;
+  border-top: solid 1px #aaa;
+  border-bottom: solid 1px #aaa;
+}
+
+div#cgit table.ssdiff td.head {
+  border-top: solid 1px #aaa;
+  border-bottom: solid 1px #aaa;
+}
+
+div#cgit table.ssdiff td.head div.head {
+  font-weight: bold;
+  color: black;
+}
+
+div#cgit table.ssdiff td.foot {
+  border-top: solid 1px #aaa;
+  border-left: none;
+  border-right: none;
+  border-bottom: none;
+}
+
+div#cgit table.ssdiff td.space {
+  border: none;
+}
+
+div#cgit table.ssdiff td.space div {
+  min-height: 3em;
+}
+
+/* libgravatar */
+div#cgit span.libravatar img.onhover {
+  display: none;
+  border: 1px solid gray;
+  padding: 0px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  width: 128px;
+  height: 128px;
+}
+
+div#cgit span.libravatar img.inline {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  width: 13px;
+  height: 13px;
+  margin-right: 0.4em;
+  /* opacity: 0.4; */
+}
+
+div#cgit span.libravatar:hover > img.onhover {
+  display: block;
+  position: absolute;
+  margin-left: 1.5em;
+  background-color: var(--hover-bg) eee;
+  box-shadow: 5px 5px 3px #bbb;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CGIT/cgit.nginx	Tue Sep 03 17:14:28 2024 +0800
@@ -0,0 +1,72 @@
+server {
+    listen [::]:80;
+    listen 80;
+    server_name git.yourdomain.com;
+    return 301 https://$server_name$request_uri;
+}
+
+server {
+    listen [::]:443 ssl http2;
+    listen 443 ssl http2;
+    server_name git.yourdomain.com;
+
+    # SSL Certificate Path
+    ssl_certificate /etc/nginx/cert/git.yourdomain.com.pem;
+    ssl_certificate_key /etc/nginx/cert/git.yourdomain.com.key;
+
+    # SSL Security
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_prefer_server_ciphers on;
+    ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
+
+    ssl_session_timeout 1d;
+    ssl_session_cache shared:SSL:10m;
+
+    # Site Log path
+    access_log /var/log/nginx/cgit-access.log;
+    error_log /var/log/nginx/cgit-error.log;
+
+    root /var/www/cgit;
+    try_files $uri @cgit;
+    client_max_body_size 10m;
+
+    location @cgit {
+        include fastcgi_params;
+        # cgit's CGI script path
+        fastcgi_param SCRIPT_FILENAME /var/www/cgit/cgit.cgi;
+        fastcgi_param DOCUMENT_ROOT /usr/lib/git-core;
+        fastcgi_pass unix:/var/run/fcgiwrap.socket;
+        fastcgi_param PATH_INFO $uri;
+        fastcgi_param QUERY_STRING $args;
+        fastcgi_param HTTP_HOST $server_name;
+        fastcgi_param GIT_HTTP_EXPORT_ALL "";
+        fastcgi_param GIT_PROJECT_ROOT /home/git;
+
+        if ($arg_service = git-receive-pack) {
+            rewrite (/.*) /git_write/$1 last;
+        }
+
+        if ($uri ~ ^/.*/git-receive-pack$) {
+            rewrite (/.*) /git_write/$1 last;
+        }
+
+        if ($arg_service = git-upload-pack) {
+            rewrite (/.*) /git_read/$1 last;
+        }
+
+        if ($uri ~ ^/.*/git-upload-pack$) {
+            rewrite (/.*) /git_read/$1 last;
+        }
+    }
+
+    location ~ /git_read/(.*) {
+        include git-http-backend.conf;
+    }
+
+    location ~ /git_write/(.*) {
+        # HTTP Basic Authentication
+        auth_basic "Authentication Required To Push";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+        include git-http-backend.conf;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CGIT/cgitrc	Tue Sep 03 17:14:28 2024 +0800
@@ -0,0 +1,146 @@
+##### cgit configuration file #####
+# https://git.zx2c4.com/cgit/tree/cgitrc.5.txt
+##### format: NAME=VALUE #####
+
+#### GLOBAL SETTINGS ####
+
+#### Web Configuration ####
+css=/cgit.css
+logo=/logo.svg
+# logo-link=
+favicon=/favicon.ico
+virtual-root=/
+
+# Prohibit search engine index
+robots=noindex, nofollow
+
+# Personalization
+root-title=Your Git Repository
+root-desc=my personal minimal and cute git server.
+head-include=/var/www/cgit/head-include.html
+footer=/var/www/cgit/footer.html
+root-readme=/var/www/cgit/about.html
+
+#### Cache Configuration ####
+cache-about-ttl=45
+cache-dynamic-ttl=3
+cache-repo-ttl=10
+cache-size=1000
+cache-root=/var/cache/cgit
+cache-root-ttl=3
+cache-scanrc-ttl=10
+cache-snapshot-ttl=30
+cache-static-ttl=15
+
+#### Filter API ####
+# owner-filter=
+# auth filter=
+source-filter=/usr/local/share/cgit/filters/syntax-highlighting.py
+commit-filter=/usr/local/share/cgit/filters/commit-links.sh
+email-filter=lua:/usr/local/share/cgit/filters/email-libravatar-korg.lua
+# email-filter=lua:/usr/local/share/cgit/filters/email-libravatar.lua
+# email-filter=lua:/usr/local/share/cgit/filters/email-gravatar.lua
+about-filter=/usr/local/share/cgit/filters/about-formatting.sh
+readme=:README.md
+readme=:readme.md
+readme=:README.txt
+readme=:readme.txt
+readme=:README
+readme=:readme
+
+#### CGIT Server Configuration ####
+
+# local-time=0
+# noplainemail=0
+# noheader=
+
+# With Smart HTTP Git Clone
+clone-url=https://git.xvo.es/$CGIT_REPO_URL
+
+# Disable dumb HTTP endpoint Git Clone
+enable-http-clone=0
+
+enable-index-owner=1
+enable-index-links=0
+enable-blame=1
+enable-log-filecount=1
+enable-log-linecount=1
+enable-commit-graph=1
+# enable-tree-linenumbers=1
+# enable-follow-links=0
+# enable-remote-branches=0
+# enable-git-config=0
+# enable-html-serving=0
+
+# Sort Configuration
+branch-sort=age
+case-sensitive-sort=1
+commit-sort=date
+
+# Summary Configuration
+summary-branches=5
+summary-log=15
+summary-tags=5
+snapshots=tar.gz zip
+max-atom-items=15
+max-blob-size=1024
+max-commit-count=50
+max-message-length=100
+max-repo-count=40
+max-repodesc-length=60
+max-stats=year
+
+# MIME Types
+mimetype.html=text/html
+mimetype.gif=image/gif
+mimetype.jpg=image/jpeg
+mimetype.jpeg=image/jpeg
+mimetype.png=image/png
+mimetype.webp=image/webp
+mimetype.pdf=application/pdf
+mimetype.svg=image/svg+xml
+
+# Remove the .git suffix
+remove-suffix=1
+scan-path=/home/git
+
+#### REPOSITORY SETTINGS ####
+
+# section-from-path=1
+# project-list=/path/to/projects.list
+# enable-filter-overrides=
+
+# For Each Single Repository
+# repo.name=
+# repo.defbranch=
+# repo.branch-sort=
+# repo.hide=
+# repo.homepage=
+# repo.ignore=
+# repo.desc=
+# repo.owner=
+# repo.path=
+# repo.url=
+# repo.clone-url=
+# repo.logo=
+# repo.logo-link=
+# repo.readme=
+# repo.section=
+# repo.snapshots=
+# repo.owner-filter=
+# repo.source-filter=
+# repo.about-filter=
+# repo.email-filter=
+# repo.commit-filter=
+# repo.commit-sort=
+# repo.enable-blame=
+# repo.enable-commit-graph=
+# repo.enable-html-serving=
+# repo.enable-log-filecount=
+# repo.enable-log-linecount=
+# repo.enable-remote-branches=
+# repo.enable-subject-links=
+# repo.extra-head-content=
+# repo.module-link=
+# repo.max-stats=
+# repo.snapshot-prefix=
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CGIT/filters/email-libravatar-korg.lua	Tue Sep 03 17:14:28 2024 +0800
@@ -0,0 +1,36 @@
+-- This script may be used with the email-filter or repo.email-filter settings in cgitrc.
+-- It adds gravatar icons to author names. It is designed to be used with the lua:
+-- prefix in filters. It is much faster than the corresponding python script.
+--
+-- Requirements:
+--      luaossl
+--      <http://25thandclement.com/~william/projects/luaossl.html>
+--
+
+local digest = require("openssl.digest")
+
+function md5_hex(input)
+        local b = digest.new("md5"):final(input)
+        local x = ""
+        for i = 1, #b do
+                x = x .. string.format("%.2x", string.byte(b, i))
+        end
+        return x
+end
+
+function filter_open(email, page)
+        buffer = ""
+        md5 = md5_hex(email:sub(2, -2):lower())
+end
+
+function filter_close()
+   html("<span class='libravatar'>" ..
+   "<img class='inline' src='//www.gravatar.com/avatar/" .. md5 .. "?s=13&d=retro' />" ..
+   "<img class='onhover' src='//www.gravatar.com/avatar/" .. md5 .. "?s=128&d=retro' />" ..
+   "</span>" .. buffer)
+   return 0
+end
+
+function filter_write(str)
+        buffer = buffer .. str
+end
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CGIT/footer.html	Tue Sep 03 17:14:28 2024 +0800
@@ -0,0 +1,1 @@
+<div class="footer">Copyright © 2024 <a href="https://cgit.seu.wiki" rel="noopener noreferrer">Charon</a>. All rights reserved.</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CGIT/git-bare	Tue Sep 03 17:14:28 2024 +0800
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+set -eu
+
+# /usr/local/bin/git-bare
+
+echo "1.make sure you are running with root user or sudo privileged"
+echo "2.make sure you have installed cURL and Git"
+echo ""
+echo "Press Enter to continue..."
+read 
+
+# Check if the running user is root or sudo user
+if [ "$(id -u)" -ne 0 ]; then
+    if ! sudo -v &> /dev/null; then
+        echo "Please run the script as root or with sudo privileged!"
+        exit 1
+    fi
+fi
+
+# Check if cURL is installed
+if ! command -v curl &> /dev/null; then
+    echo "cURL is not installed, please install curl first."
+    echo "sudo apt update && sudo apt install -y curl"
+    exit 1
+fi
+
+# Check if Git is installed
+if ! command -v git &> /dev/null; then
+    echo "Git is not installed, please install git first."
+    echo "sudo apt update && sudo apt install -y git"
+    exit 1
+fi
+
+read -p "Please enter the repository name (without .git)." reponame
+
+if [ -d "/home/git/${reponame}.git" ]; then
+    echo "Repository ${reponame} already exists"
+    exit 1
+else
+    git init --bare "/home/git/${reponame}.git"
+    cd "/home/git/${reponame}.git"
+
+    read -p "Please enter the repository description:" description
+    echo "${description}." | sudo tee "description" > /dev/null
+
+    # Update the Git repository info
+    if ! git update-server-info &> /dev/null; then
+        echo "Failed to update Git repository information, exiting..."
+        exit 1
+    fi
+
+    # Set up the new repository's post-receive
+    curl -s https://git.xvo.es/self-hosted/plain/cgit/post-receive.agefile -o hooks/post-receive
+    chmod +x hooks/post-receive
+    
+    # Set user groups and permissions for the repository
+    chown -R git:www-data "/home/git/${reponame}.git"
+    chmod -R ug+rwx,o-rwx "/home/git/${reponame}.git"
+    echo "New bare repository ${reponame} initialized successfully."
+fi
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CGIT/git-http-backend.conf	Tue Sep 03 17:14:28 2024 +0800
@@ -0,0 +1,7 @@
+fastcgi_pass unix:/var/run/fcgiwrap.socket;
+include fastcgi_params;
+fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
+fastcgi_param GIT_HTTP_EXPORT_ALL "";
+fastcgi_param GIT_PROJECT_ROOT /home/git;
+fastcgi_param PATH_INFO $1;
+fastcgi_param REMOTE_USER $remote_user;
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CGIT/head-include.html	Tue Sep 03 17:14:28 2024 +0800
@@ -0,0 +1,3 @@
+<meta charset="utf-8">
+<!-- Customized head sections, such as site statistics scripts-->
+<!-- <script src="xxx" ></script> -->
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CGIT/post-receive.agefile	Tue Sep 03 17:14:28 2024 +0800
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# An example hook to update the "agefile" for CGit's idle time calculation.
+#
+# This hook assumes that you are using the default agefile location of
+# "info/web/last-modified".  If you change the value in your cgitrc then you
+# must also change it here.
+#
+# To install the hook, copy (or link) it to the file "hooks/post-receive" in
+# each of your repositories.
+#
+
+agefile="$(git rev-parse --git-dir)"/info/web/last-modified
+
+mkdir -p "$(dirname "$agefile")" &&
+git for-each-ref \
+	--sort=-authordate --count=1 \
+	--format='%(authordate:iso8601)' \
+	>"$agefile"
\ No newline at end of file
备案号:苏ICP备2024087954号-2 | 渝公网安备50010402001513