Skip to content

Commit

Permalink
initial insertion
Browse files Browse the repository at this point in the history
  • Loading branch information
hiltjo committed Dec 4, 2015
0 parents commit acd2400
Show file tree
Hide file tree
Showing 5 changed files with 156 additions and 0 deletions.
1 change: 1 addition & 0 deletions README
@@ -0,0 +1 @@
to use urmom is quite easy...
15 changes: 15 additions & 0 deletions TODO
@@ -0,0 +1,15 @@
- be smarter about changes (an existing commit can never change the diff page).
- add raw link to latest files: raw/file...
- add summary page?
- add diffstat to diff page? + and - lines summary?
- escape < > ' " etc, maybe even use CDATA ?
- shorter date format for logs.html page.
- speed up generating files.
- add stylesheet + 2f30/suckless logo.
- for files link to the commit but make the filename a link anchor.
- default to log view (stateless).
- link to lines in file view! / commit log?
- show all the tags and branches as list.
- show commits for all tags and branches???
- no tarballs, snapshots and such.
- able to add link to git url: git://url... per project.
Binary file added logo.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 23 additions & 0 deletions style.css
@@ -0,0 +1,23 @@
body {
font-family: sans-serif;
color: #00ff00;
background-color: #000;
}

h1 {
vertical-align: middle;
}

a {
color: #00ff00;
}

hr {
color: #00ff00;
background-color: #00ff00;
border-top: 1px solid #00ff00;
}

pre {
font-family: monospace;
}
117 changes: 117 additions & 0 deletions urmoms
@@ -0,0 +1,117 @@
#!/bin/sh

# DEBUG
#set -e -x

baseurl="http://cow.codemadness.org/gitlog/"
# TODO: read .git/description.
description="sbase"
logdir="../gitlog"

header() {
cat <<!__EOF__
<!DOCTYPE HTML>
<html dir="ltr" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="en" />
<title>${description}</title>
<base href="${baseurl}" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<center>
<h1><img src="logo.png" alt="" /> ${description}</h1>
<a href="index.html">Tree</a> |
<a href="log.html">Log</a> |
<a href="stats.html">Stats</a> |
<a href="readme.html">README</a> |
<a href="license.html">LICENSE</a>
</center>
<hr/>
<pre>
!__EOF__
}

footer() {
cat <<!__EOF__
</pre>
<hr/>
<i><center>Powered by urmoms vibrator</center></i>
</body>
</html>
!__EOF__
}

mkdir -p "${logdir}"
firstcommit=$(git log | grep '^commit ' | tail -n 1 | cut -f 2 -d ' ')

# make log per file.
# TODO: just link to commit/commit? save some space and time?
git ls-tree -r --name-only master | while read -r file; do
test -e "${logdir}/file/${file}.html" && continue

d=$(dirname "${file}")
mkdir -p "${logdir}/file/${d}"

header > "${logdir}/file/${file}.html"
git show "${firstcommit}"...master "${file}" | \
sed -E 's@^commit (.*)$@commit <a href="commit/\1.html">\1</a>@g' >> "${logdir}/file/${file}.html"
footer >> "${logdir}/file/${file}.html"
done

# make log with all commits.
header > "${logdir}/log.html"
printf '<table border="0">' >> "${logdir}/log.html"
git log --pretty='<tr><td align="right">%cD</td><td><a href="commit/%H.html">%H</a></td><td>%an</td><td>%s</td></tr>' >> "${logdir}/log.html"
printf '</table>' >> "${logdir}/log.html"
footer >> "${logdir}/log.html"

# make diff for each commit (all files).
mkdir -p "${logdir}/commit"
git log --pretty='%H' | while read -r commit; do
test -e "${logdir}/commit/${commit}.html" && continue
header > "${logdir}/commit/${commit}.html"
git show "${commit}" >> "${logdir}/commit/${commit}.html"
footer >> "${logdir}/commit/${commit}.html"
done

# make index with file links.
header >> "${logdir}/index.html"
git ls-tree -r master | sed -E 's@ (.*)$@ <a href="file/\1.html">\1</a>@g' >> "${logdir}/index.html"
footer >> "${logdir}/index.html"

# readme page
# find README file.
readme=""
for f in README README.md readme.md; do
test -e "${f}" && readme="${f}"
done
# make page.
header > "${logdir}/readme.html"
if test x"${readme}" != x""; then
cat "${readme}" >> "${logdir}/readme.html"
else
echo "no README file found" >> "${logdir}/readme.html"
fi
footer >> "${logdir}/readme.html"

# license page
# find LICENSE file.
license=""
for f in LICENSE LICENSE.md; do
test -e "${f}" && license="${f}"
done
# make page.
header > "${logdir}/license.html"
if test x"${readme}" != x""; then
cat "${license}" >> "${logdir}/license.html"
else
echo "unknown license" >> "${logdir}/license.html"
fi
footer >> "${logdir}/license.html"

# stats (authors).
header > "${logdir}/stats.html"
git shortlog -n -s >> "${logdir}/stats.html"
footer >> "${logdir}/stats.html"

0 comments on commit acd2400

Please sign in to comment.