Git Repo Pages
I’ve revamped the way I’m generating and storing Web pages relating to my git repositories.
Previously, these were in the projects/repos
subdirectory of this site, generated by active code during rendering. This had a
few downsides:
- The whole site needs to be regenerated whenever a repo gets pushed,
since the content is based on the repo’s files (e.g. a
README
). The build system’s caching ensures that only the necessary pages would change, but it’s still a pain, e.g. if pushing to a repo while halfway through some refactor that makes the site build fail. - Mirroring this site on IPFS requires an entirely new hash, and hence IPNS update, even for these small changes.
The solution is to split off each git repo to its own “site”, which
these old URLs now redirect to. Links to these separate sites can be
found on the repos page, and they all live
in the /git directory (those directories without
.git
at the end), which have previously been used for the
auto-generated git2html
pages.
Those git2html
pages are still there, along with any issues
tracked by artemis
(rendered using mhonarc
).
It’s all a bit bare-bones at the moment, but I plan to clean it up a
little, and also include any asv
benchmarks defined in the
repo.
Each git repo site is also hosted on IPFS, with an IPNS name to track the latest version. IPNS still seems rather hacky (e.g. entries seem to expire after 1 day) but for the moment the repos are available at the following addresses:
- annotatedb is available at QmP457RvBiHTq9TBWa817b7KPYTTEso82y1WySR9NeQSuJ
- ant-colony is available at QmcjQ62nY6B4bV5rMpBK45HcU4i3Mtmfma8PbGLHC5gmEq
- apt-repo-tools is available at QmVhEKuMn2wyRQ81H6g3DAKXWz1yi3KSec8SagR8WDFCz2
- arbitrary-haskell is available at QmUGC7srZZEc3L8nPcSgsLUkgTkw2VB4b5uzQ5NCgau2Nr
- arduino-json-client is available at QmRymc8NwuGiNHPJhzHNdJFNYcjy7Kcuygbmhrvf64Hc8Q
- arrowlets-for-nodejs is available at Qma91V7cxCXu6Sk5jVAoVCCiZUytXdwtP7FirHKChyRU9E
- ast-plugin is available at QmcfHJnKAirXaFhp8aMTkLEmJBqbvBbkKGmVE7zGEDx4EY
- asv-nix is available at QmNg5kznLkpzo5xu2FTnr4ujCbAqkJD4roui5kot6hX1K8
- bitbitjump-maude is available at QmXnGYKBEGEUrPLR2TQACe7PW2y9y6PHSytWcf6LavCr5S
- bugseverywhere is available at QmUC2RN5DGwRmhkVP81oDq3JgwScaRuvBgQK9vBicZ4kMk
- cabal2db is available at QmNgGmCzapHKZQmnfLZJKPTXRzVAjMRqgqNMHA1CkbfW2s
- chriswarbo-net is available at QmVYPCRGtF5AJSkg1hrcTujFTsBAXLbcobFJMTtbiZCCPQ
- chrome-duplicate-tab-detector is available at Qma9uZKJETxd98QB6CMXg6L1HCv5pz46FbTdhi3hXXaT4M
- clutter-file-browser is available at QmWA4jVoPwjWYdZQxqt1XEj1KpdhRFmcLQjZGBqgqmSd3R
- dependent-types-talk is available at QmSTPvggjk7o4Vo3VMFfJxY65qwVf8sT1xJ2bL4HpFkczx
- explore-theories is available at QmSXTNvPdNw9fbnqewqQX5YU8Jx3q9mgz9vfAyDJpuKmZg
- feed2maildir is available at QmTbfXJtE7gcgehaJ9xHcAe4eHjs7FEDoqRYd3JuT6geR8
- general-tests is available at QmY6sidbzkGjngyxFXBkgQWaeQwS4QNWqciLG6ZRGU2VPg
- genetic-turing-machines is available at QmcE82MsPYKL27GRxXHZXSENov1xgsc6oc8F9nPdBcUKrS
- genifunctors is available at QmNtf9V1MLALrQfPEQdCtSYrAp7nKXuc9N9cikVyvG8SEe
- get-deps is available at QmZDbMAaarYeWEe61EYRKPTGnLFRBm41792Ew7GwVYUbBY
- ghc-dup is available at QmdFJgH4fnKzGfC6HCuPJ1h4QJzJ7RN4KxS38yGpNR5MJe
- git2html is available at Qme5gpqq4m6Se71i3yKLbf5vWbof9i4qVguTPcYnZZitp8
- gnucleon is available at QmVYxkZKRtLmqTtdmAiEPAovw6nJzFZBBtSKhPvVbAkqnc
- gnucleon-clutter is available at QmUzN7kajUhkfamBKjtEt9nZ9ydd2cWv69YGfzV4NCQLN2
- gpu-simulations is available at Qmbg5PLQcD4nuLLkoRuJZh7hR9uVg2qcsYFr8nCGTqtixx
- gravity-spiral is available at QmXdgABqxQmZFyQb29qcJ1af7VLosHDKTRruWV4v7mYXcf
- haskell-te is available at QmWv958VzBJQchGjYKiSaxLC9ugrjvXkqMpVrmjp9AonXq
- hipspec is available at QmW74ox79okYt24GEct2yvroPWPnbLbrwXcaYoHZcPCHsP
- hs2ast is available at QmXQLfXsmXsGVPagfvojVXB51LP6ipeMQMnXAkXQxJw77y
- hs2ast-tests is available at QmRGQBVuf7C6WRgFRWBjNBWe7ebr8MyAkFQcLMmHw2H6yf
- iddish is available at Qmcia7HHUZt7xVLqdGsfdkQKuBnSfrnqm77C8SNaeMEvhw
- ifcxt is available at QmVcADUGcpJLroJUTQr1XJvJDbhjkdm9fcxHbqynWWnBxa
- iron is available at QmNV2SX34kJ8uhZzTTPGhhbZBYjiePsrftLpwdLNYzWd6U
- isahipster is available at QmZ2ox1kQt9kVs1kTZSjxurTZyvrHkEzR2ApVFHHx54D23
- isaplanner-tip is available at QmSds955qLwpfnc8yW9obwDN2gQWqv8gpqiMyc19YS5V2i
- java-gnucleon is available at QmRfUKRxgQTzYtD681uUwStJ9KTPduhHCaDabp9KRvEhbX
- java-maxint is available at QmQcmrsLpDLymgv5KV5xpv8URD8tQDu3pSue7GAcWL7Nuk
- java-package-installer is available at QmNoh1MGo54WAfkf7ostsejEjr1ESQK1CrftNeYaZ3ibfM
- java-spider is available at QmcvYQWUvr8i2ehej7BomYfJUBKyfUhVcSg7o5fHkCyPGd
- javascript-base64 is available at Qmc3aQTDcCaWNMHjjopwnfnjN1w6R3wVYdGUBXan9U8Cxr
- js-plumb is available at QmPGVbrRZRVWAjysW9w8JUsyAY9nnB7EvA9fV7KG3VTJ8A
- k-means is available at QmTmYB2pij68531QxwTc5Ez9NCQFhZABafFHNx6oaQQTKz
- lazy-lambda-calculus is available at QmRVrPdBJjG53DMZZZX7xwKouneEfTC8bFpFy6NfzMu2ev
- lazy-smallcheck-2012 is available at QmP114ziNJjrTWBVTwUzvZ9s5VL7W5Fz4MMciS7miZP9jH
- mc-aixi-ctw is available at QmdMR4YvwVFGwSwZRZ8FYbWDr89CJnoAB65xZi552zzi23
- md2pdf is available at QmduVnJtqLubZXvEsMpazz7sN9vg6T2R4LJftG5kh7xhMx
- ml4hs is available at QmezKEcCgVbKPr8xRSBtTiJzo1BeYuoGRPPDrbdtexukHZ
- ml4hs-helper is available at QmdTML9eoHFxzrWJyCR8W7ao9uH4wkcyzM5UmTf5pfX5dv
- ml4hsfe is available at QmTCpScDd8etRDB8i2RbmkDbinE5tayNFdz3sN1SL6M5fa
- ml4pg is available at QmbfxT2rA8HZapDg7nQF3x7iWtmpMsuKcbVt5HLY9F6bvy
- mlspec is available at QmUjBpovgUc6uQVfGmg3S2nJsLGe6ieg8VDd7MzCkR44VU
- mlspec-bench is available at QmbbdkGTuHcaNQ7Azhsk3K6zEJCt6ZGVY1KkF2ygFh8zYu
- mlspec-helper is available at QmeAiHeArhxZBouSPgi8ZbzbYgXeoCARvNvgLPPLoTWAPJ
- nix-config is available at QmRD1idh3NzZ6ibd2wgdg5dt2anKTYq3zNiCT2j7jQdX3H
- nix-eval is available at QmWwsCYvphXnA8eCqeSPgpWsBqMTiFQz2ho8YbFx1y2S5a
- ocportal-salmon is available at QmZ9i76XFSoWzy6ari9ny8mBCN7cepNCxoT7CTu4rFXjvY
- order-deps is available at QmNPBJULUDbQfwHxZhoN8A5Mxhsv2zQmMZBJE4AD2P9GSG
- panhandle is available at Qme31Nkufz2LdGwVvHg2HsN7VcfF6C9nzrsaWTTxptUK4a
- panpipe is available at QmVRbryXSDKZDRAodEGoczcLyMoWWPJY4TmAxar6kgSAYp
- particle-storage-ring-simulation is available at QmVFBWUkrroj1JeCYkHTUVNryJrRYvAqFs6bhx4YCzs2nF
- php-core is available at QmQZhq79gXN192td7tTpAKwy2gNoVfZGg54e4a177D9HiN
- php-easycheck is available at QmQBRb6Q3nx2MxUSdAEg2ZZ83xxywYoFP6ttebpUdiB3Gc
- php-plumb is available at QmXfnhNow7J4GLvPh9paLZiQT9fdErxyesGqoL7XQSscF5
- php-prelude is available at QmXAJsc3e58iTGRoodaceKfu7bxFZSTC47Bn9c7887kTzQ
- powerplay is available at QmV5MbzWZQHjRjHsQ9XDTYP8M6VYcgDtYoewfCkJR9ndQP
- pubsubclient is available at QmRdc5CGgaVpjy5NYVANS6BDVrzCCgj2YfGrRfudp6sZrY
- purely-functional-self-modifying-code is available at Qmb681ot89DnJ62H7RWWT3K1dfCPxk7km2ACBezsSU3VBz
- python-app-prefs is available at QmX4zoJS1qiM2tPXbihUaMRjXX1y4SaW7Y7b7kMf9qnz18
- python-clutter-experiments is available at QmP3dSXgWjpPG8oQUDzGHpZij54o8U3uFhxbgY54qVxHWg
- python-decompiler is available at QmP9cftyPNDt7CUfCornxjhjRco3XLEcXFckCMA9GwPTRg
- python-examples is available at QmR64iFzkfaL8njQ5xrXVWVe123YgZ8JYUajxkvvUySaeb
- python-graphics-tests is available at QmeeejPEe15x6ZC3H5EgHsnoyqi7imdWYDvdgDtpyM1Ekc
- python-pipes-simulation is available at QmWtMVRp36ro3sCqvdo28y7N77y7VM69N5fnytMNYkaFBZ
- python-plumb is available at QmeCt1v2gCX1BpL6XC5Ba6xSSUwaVh3W9BuM6QoY3t34fi
- python-random-walks is available at QmSrQcg22TQEtbzhrLBD68XqXT4g7gK92CUijduV3AfiHz
- python-visualiser is available at QmaHxE731gq6FBRSaS8G4EBykyHttuQvZ2S7JtmE6Zfnot
- quickspec is available at QmVFUN7iymmYwyXniGtbAjfvKL899e2itvE4uzfnLeNgGC
- quickspec-measure is available at QmRLeYAas1MyZo7ZekkSsmvgYMKuTWizdP4a83LoJV15dw
- recurrent-clustering is available at QmWEAhKpfRcUvp5attkuL9rNkWLR34vPAsMwuNqtWNURTY
- reduce-equations is available at QmR2n3hboVPc9xyXwuyYdQ56DMj6nYgUJ3n5TWJoeEpkRT
- run-weka is available at QmfHmpZMSNDjMR3mNDdVrS2JMYLxvkPod6PNc6xQKXiT47
- runtime-arbitrary is available at QmZ8Z2Zz53obTJhmN3vuE9itKC68JcZWPhm1jLnDK3m3tZ
- runtime-arbitrary-tests is available at Qmevuvcx5WTLHXcLsHCPyQBJU5WbnNnUhQiLhbT4jUKaTm
- sample-bench is available at QmUCPXLTvkMxyfBCLLLUutaF9YSwVjhSNm8Stp9ZRg1oiL
- search-optimisation-streams is available at QmfD84i6RhwFBRo1iaTs57F283YpmNyGjVkbwGR7vnNFpZ
- service-packs is available at QmaKX5rSANxPMrcjWzYyunRVBJ27ZSRLYUhCjDggc1zTP6
- spoon is available at Qmea8j3P1pNaDy73KtAinCbcX5jmK4FKNRvHLkM8Sb2eTM
- stp-sites is available at QmaBjPeZ1Sytq9VMGwQdLF5W82ShWWZ7jcjfWCMj2b9v14
- theory-exploration-benchmarks is available at QmUWfrFrZCTKPU5ErHQi7MJorPRz494TPcYzJPSaR3QEwD
- tinc is available at QmSCbE5HJaxWCAD6FoMSqi8rpti4nL4Y6ARd547LqBWm1J
- tip-benchmarks is available at QmNXBN6a36qtxRjRT7qNgMEfXoCbGyQNG2MUX6T561YiCx
- tree-features is available at QmXFuyhxQDe9zB4sULZvmvejHnCwHcKanQYp4VdtyW3Fpw
- turtleviewer is available at QmR36tKJDS6avjozwBALirWf7GwvdQN8bP7ER3iee7aGhR
- type-parser is available at QmcgyG3kMcbq6YsynZuLLVY9s3ZTzZujSt8tNn9eUHHv83
- warbo-dotfiles is available at QmU663KSfLzHMpSC4CkyWXfbcLwAzsDTswPHZP9s4W9cTR
- warbo-emacs-d is available at QmRRXFBRaPdBSp1ahKKAgSSzBqjN9e9TKpZHqTBx1xKmvB
- warbo-utilities is available at Qme6nrk3sMbfia1dwnqDBZ1aDtjohYxUSXfdDoj3Svh4VX
- writing is available at QmZZumTbK5AXRzi564KfD3axMnrrVbJ4rzEeewnHYyMghC