{"id":13511763,"url":"https://github.com/jgm/gitit","last_synced_at":"2025-05-14T03:06:16.817Z","repository":{"id":449659,"uuid":"72706","full_name":"jgm/gitit","owner":"jgm","description":"A wiki using HAppS, pandoc, and git","archived":false,"fork":false,"pushed_at":"2025-04-03T16:26:46.000Z","size":2239,"stargazers_count":2192,"open_issues_count":207,"forks_count":224,"subscribers_count":77,"default_branch":"master","last_synced_at":"2025-04-05T16:01:34.067Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jgm.png","metadata":{"files":{"readme":"README.markdown","changelog":"CHANGES","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["jgm"]}},"created_at":"2008-11-07T07:38:49.000Z","updated_at":"2025-04-03T16:26:50.000Z","dependencies_parsed_at":"2023-07-05T15:02:15.057Z","dependency_job_id":"55a21189-2642-4e55-ad52-f5d0dff1452e","html_url":"https://github.com/jgm/gitit","commit_stats":{"total_commits":1407,"total_committers":74,"mean_commits":"19.013513513513512","dds":"0.26581378820184787","last_synced_commit":"75899f1be4d8f14c2797c3e053f00028a741e310"},"previous_names":[],"tags_count":72,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgm%2Fgitit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgm%2Fgitit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgm%2Fgitit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgm%2Fgitit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jgm","download_url":"https://codeload.github.com/jgm/gitit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248606206,"owners_count":21132325,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T03:01:09.963Z","updated_at":"2025-04-12T17:35:51.347Z","avatar_url":"https://github.com/jgm.png","language":"Haskell","funding_links":["https://github.com/sponsors/jgm"],"categories":["Haskell","Install from Source","Software","others","Apps","Wikis"],"sub_categories":["Wikis","KnowledgeBase","Localization","文档生成器"],"readme":"Gitit\n=====\n\nGitit is a wiki program written in Haskell. It uses [Happstack] for\nthe web server and [pandoc] for markup processing. Pages and uploaded\nfiles are stored in a [git], [darcs], or [mercurial] repository\nand may be modified either by using the VCS's command-line tools or\nthrough the wiki's web interface. By default, pandoc's extended version\nof markdown is used as a markup language, but reStructuredText, LaTeX, HTML,\nDocBook, or Emacs Org-mode markup can also be used.  Gitit can\nbe configured to display TeX math (using [texmath]) and\nhighlighted source code (using [highlighting-kate]).\n\nOther features include\n\n* plugins: dynamically loaded page transformations written in Haskell\n  (see \"Network.Gitit.Interface\")\n\n* categories\n\n* TeX math\n\n* syntax highlighting of source code files and code snippets (using\n  highlighting-kate)\n\n* caching\n\n* Atom feeds (site-wide and per-page)\n\n* a library, \"Network.Gitit\", that makes it simple to include a gitit\n  wiki in any happstack application\n\n[git]: http://git.or.cz\n[darcs]: http://darcs.net\n[mercurial]: http://mercurial.selenic.com/\n[pandoc]: http://pandoc.org\n[Happstack]: http://happstack.com\n[highlighting-kate]: http://johnmacfarlane.net/highlighting-kate/\n[texmath]: http://github.com/jgm/texmath/tree/master\n\nGetting started\n===============\n\nCompiling and installing gitit\n------------------------------\n\nThe most reliable way to install gitit from source is to get the\n[stack] tool.  Then clone the gitit repository and use stack\nto install:\n\n    git clone https://github.com/jgm/gitit\n    cd gitit\n    stack install\n\nAlternatively, instead of using [stack], you can get the\n[Haskell Platform] and do the following:\n\n    cabal update\n    cabal install gitit\n\nThis will install the latest released version of gitit.\nTo install a version of gitit checked out from the repository,\nchange to the gitit directory and type:\n\n    cabal install\n\nThe `cabal` tool will automatically install all of the required haskell\nlibraries. If all goes well, by the end of this process, the latest\nrelease of gitit will be installed in your local `.cabal` directory. You\ncan check this by trying:\n\n    gitit --version\n\nIf that doesn't work, check to see that `gitit` is in your local\ncabal-install executable directory (usually `~/.cabal/bin`). And make\nsure `~/.cabal/bin` is in your system path.\n\n[stack]: https://github.com/commercialhaskell/stack\n[Haskell Platform]: https://www.haskell.org/platform/\n\nRunning gitit\n-------------\n\nTo run gitit, you'll need `git` in your system path. (Or `darcs` or\n`hg`, if you're using darcs or mercurial to store the wiki data.)\n\nGitit assumes that the page files (stored in the git repository) are\nencoded as UTF-8. Even page names may be UTF-8 if the file system\nsupports this. So you should make sure that you are using a UTF-8 locale\nwhen running gitit. (To check this, type `locale`.)\n\nSwitch to the directory where you want to run gitit. This should be a\ndirectory where you have write access, since three directories, `static`,\n`templates`, and `wikidata`, and two files, `gitit-users` and `gitit.log`,\nwill be created here. To start gitit, just type:\n\n    gitit\n\nIf all goes well, gitit will do the following:\n\n 1.  Create a git repository, `wikidata`, and add a default front page.\n 2.  Create a `static` directory containing files to be treated as\n     static files by gitit.\n 3.  Create a `templates` directory containing HStringTemplate templates\n     for wiki pages.\n 4.  Start a web server on port 5001.\n\nCheck that it worked: open a web browser and go to\n\u003chttp://localhost:5001\u003e.\n\nYou can control the port that gitit runs on using the `-p` option:\n`gitit -p 4000` will start gitit on port 4000. Additional runtime\noptions are described by `gitit -h`.\n\nUsing gitit\n===========\n\nWiki links and formatting\n-------------------------\n\nFor instructions on editing pages and creating links, see the \"Help\" page.\n\nGitit interprets links with empty URLs as wikilinks. Thus, in markdown\npages, `[Front Page]()` creates an internal wikilink to the page `Front\nPage`. In reStructuredText pages, `` `Front Page \u003c\u003e`_ `` has the same\neffect.\n\nIf you want to link to a directory listing for a subdirectory, use a\ntrailing slash:  `[foo/bar/]()` creates a link to the directory for\n`foo/bar`.\n\nPage metadata\n-------------\n\nPages may optionally begin with a metadata block.  Here is an example:\n\n    ---\n    format: latex+lhs\n    categories: haskell math\n    toc: no\n    title: Haskell and\n      Category Theory\n    ...\n\n    \\section{Why Category Theory?}\n\nThe metadata block consists of a list of key-value pairs, each on a\nseparate line. If needed, the value can be continued on one or more\nadditional line, which must begin with a space. (This is illustrated by\nthe \"title\" example above.) The metadata block must begin with a line\n`---` and end with a line `...` optionally followed by one or more blank\nlines. (The metadata block is a valid YAML document, though not all YAML\ndocuments will be valid metadata blocks.)\n\nCurrently the following keys are supported:\n\nformat\n:   Overrides the default page type as specified in the configuration file.\n    Possible values are `markdown`, `rst`, `latex`, `html`, `markdown+lhs`,\n    `rst+lhs`, `latex+lhs`.  (Capitalization is ignored, so you can also\n    use `LaTeX`, `HTML`, etc.)  The `+lhs` variants indicate that the page\n    is to be interpreted as literate Haskell.  If this field is missing,\n    the default page type will be used.\n\ncategories\n:   A space or comma separated list of categories to which the page belongs.\n\ntoc\n:   Overrides default setting for table-of-contents in the configuration file.\n    Values can be `yes`, `no`, `true`, or `false` (capitalization is ignored).\n\ntitle\n:   By default the displayed page title is the page name.  This metadata element\n    overrides that default.\n\nHighlighted source code\n-----------------------\n\nIf gitit was compiled against a version of pandoc that has highlighting\nsupport (see above), you can get highlighted source code by using\n[delimited code blocks]:\n\n    ~~~ {.haskell .numberLines}\n    qsort []     = []\n    qsort (x:xs) = qsort (filter (\u003c x) xs) ++ [x] ++\n                   qsort (filter (\u003e= x) xs) \n    ~~~\n\nTo see what languages your pandoc was compiled to highlight:\n\n    pandoc -v\n\n[delimited code blocks]: http://pandoc.org/README.html#delimited-code-blocks\n\nConfiguring and customizing gitit\n=================================\n\nConfiguration options\n---------------------\n\nUse the option `-f [filename]` to specify a configuration file:\n\n    gitit -f my.conf\n\nThe configuration can be split between several files:\n\n\tgitit -f my.conf -f additional.conf\n\nOne use case is to keep sensible part of the configuration outside of a SCM\n(oauth client secret for example).\n\nIf this option is not used, gitit will use a default configuration.\nTo get a copy of the default configuration file, which you\ncan customize, just type:\n\n    gitit --print-default-config \u003e my.conf\n\nThe default configuration file is documented with comments throughout.\n\nThe `static` directory\n----------------------\n\nOn receiving a request, gitit always looks first in the `static`\ndirectory (or in whatever directory is specified for `static-dir` in\nthe configuration file). If a file corresponding to the request is\nfound there, it is served immediately. If the file is not found in\n`static`, gitit next looks in the `static` subdirectory of gitit's data\nfile (`$CABALDIR/share/gitit-x.y.z/data`). This is where default css,\nimages, and javascripts are stored. If the file is not found there\neither, gitit treats the request as a request for a wiki page or wiki\ncommand.\n\nSo, you can throw anything you want to be served statically (for\nexample, a `robots.txt` file or `favicon.ico`) in the `static`\ndirectory. You can override any of gitit's default css, javascript, or\nimage files by putting a file with the same relative path in `static`.\nNote that gitit has a default `robots.txt` file that excludes all\nURLs beginning with `/_`.\n\nNote:  if you set `static-dir` to be a subdirectory of `repository-path`,\nand then add the files in the static directory to your repository, you\ncan ensure that others who clone your wiki repository get these files\nas well.  It will not be possible to modify these files using the web\ninterface, but they will be modifiable via git.\n\nUsing a VCS other than git\n--------------------------\n\nBy default, gitit will store wiki pages in a git repository in the\n`wikidata` directory.  If you'd prefer to use darcs instead of git,\nyou need to add the following field to the configuration file:\n\n    repository-type: Darcs\n\nIf you'd prefer to use mercurial, add:\n\n    repository-type: Mercurial\n\nThis program may be called \"darcsit\" instead of \"gitit\" when a darcs\nbackend is used.\n\nNote:  we recommend that you use gitit/darcsit with darcs version\n2.3.0 or greater.  If you must use an older version of darcs, then\nyou need to compile the filestore library without the (default)\nmaxcount flag, before (re)installing gitit:\n\n    cabal install --reinstall filestore -f-maxcount\n    cabal install --reinstall gitit\n\nOtherwise you will get an error when you attempt to access your\nrepository.\n\nChanging the theme\n------------------\n\nTo change the look of the wiki, you can modify `custom.css` in\n`static/css`.\n\nTo change the look of printed pages, copy gitit's default `print.css`\nto `static/css` and modify it.\n\nThe logo picture can be changed by copying a new PNG file to\n`static/img/logo.png`. The default logo is 138x155 pixels.\n\nTo change the footer, modify `templates/footer.st`.\n\nFor more radical changes, you can override any of the default\ntemplates in `$CABALDIR/share/gitit-x.y.z/data/templates` by copying\nthe file into `templates`, modifying it, and restarting gitit. The \n`page.st` template is the master template; it includes the others. \nInterpolated variables are surrounded by `$`s, so `literal $` must \nbe backslash-escaped.\n\nAdding support for math\n-----------------------\n\nTo write math on a markdown-formatted wiki page, just enclose it\nin dollar signs, as in LaTeX:\n\n    Here is a formula:  $\\frac{1}{\\sqrt{c^2}}$\n\nYou can write display math by enclosing it in double dollar signs:\n\n    $$\\frac{1}{\\sqrt{c^2}}$$\n\nGitit can display TeX math in three different ways, depending on the\nsetting of `math` in the configuration file:\n\n1.  `mathjax` (default): Math will be rendered using the [MathJax] javascript.\n\n2.  `mathml`: Math will be converted to MathML using\n    [texmath]. This method works with IE+mathplayer, Firefox, and\n    Opera, but not Safari.\n\n3.  `raw`: Math will be rendered as raw LaTeX codes.\n\n[MathJax]: https://www.mathjax.org/\n\nRestricting access\n------------------\n\nIf you want to limit account creation on your wiki, the easiest way to do this\nis to provide an `access-question` in your configuration file. (See the commented\ndefault configuration file.)  Nobody will be able to create an account without\nknowing the answer to the access question.\n\nAnother approach is to use HTTP authentication. (See the config file comments on\n`authentication-method`.)\n\nAuthentication through github\n-----------------------------\n\nIf you want to authenticate the user from github through oauth2, you need to\nregister your app with github to obtain a OAuth client secret and add the\nfollowing section to your configuration file:\n\n```\n[Github]\noauthclientid: 01239456789abcdef012\noauthclientsecret: 01239456789abcdef01239456789abcdef012394\noauthcallback: http://mysite/_githubCallback\noauthoauthorizeendpoint: https://github.com/login/oauth/authorize\noauthaccesstokenendpoint: https://github.com/login/oauth/access_token\n## Uncomment if you are checking membership against an organization and change\n## gitit-testorg to this organization:\n# github-org: gitit-testorg\n```\n\nThe github authentication uses the scope `user:email`. This way, gitit gets the\nemail of the user, and the commit can be assigned to the right author if the\nwikidata repository is pushed to github. Additionally, it uses `read:org` if you\nuses the option `github-org` to check membership against an organization.\n\nTo push your repository to gitub after each commit, you can add the file\n`post-commit` with the content below in the .git/hooks directory of your\nwikidata repository.\n\n```\n#!/bin/sh\ngit push origin master 2\u003e\u003e logit\n```\n\nPlugins\n=======\n\nPlugins are small Haskell programs that transform a wiki page after it\nhas been converted from Markdown or another source format. See the example\nplugins in the `plugins` directory. To enable a plugin, include the path to the\nplugin (or its module name) in the `plugins` field of the configuration file.\n(If the plugin name starts with `Network.Gitit.Plugin.`, gitit will assume that\nthe plugin is an installed module and will not look for a source file.)\n\nPlugin support is enabled by default. However, plugin support makes\nthe gitit executable considerably larger and more memory-hungry.\nIf you don't need plugins, you may want to compile gitit without plugin\nsupport.  To do this, unset the `plugins` Cabal flag:\n\n    cabal install --reinstall gitit -f-plugins\n\nNote also that if you compile gitit for executable profiling, attempts\nto load plugins will result in \"internal error: PAP object entered!\"\n\nAccessing the wiki through git\n==============================\n\nAll the pages and uploaded files are stored in a git repository. By\ndefault, this lives in the `wikidata` directory (though this can be\nchanged through configuration options). So you can interact with the\nwiki using git command line tools:\n\n    git clone ssh://my.server.edu/path/of/wiki/wikidata\n    cd wikidata\n    vim Front\\ Page.page  # edit the page\n    git commit -m \"Added message about wiki etiquette\" Front\\ Page.page\n    git push\n\nIf you now look at the Front Page on the wiki, you should see your changes\nreflected there.  Note that the pages all have the extension `.page`.\n\nIf you are using the darcs or mercurial backend, the commands will\nbe slightly different.  See the documentation for your VCS for\ndetails.\n\nPerformance\n===========\n\nCaching\n-------\n\nBy default, gitit does not cache content.  If your wiki receives a lot of\ntraffic or contains pages that are slow to render, you may want to activate\ncaching.  To do this, set the configuration option `use-cache` to `yes`.\nBy default, rendered pages, and highlighted source files\nwill be cached in the `cache` directory. (Another directory can be\nspecified by setting the `cache-dir` configuration option.)\n\nCached pages are updated when pages are modified using the web\ninterface. They are not updated when pages are modified directly through\ngit or darcs. However, the cache can be refreshed manually by pressing\nCtrl-R when viewing a page, or by sending an HTTP GET or POST request to\n`/_expire/path/to/page`, where `path/to/page` is the name of the page to\nbe expired.\n\nUsers who frequently update pages using git or darcs may wish to add a\nhook to the repository that makes the appropriate HTTP request to expire\npages when they are updated. To facilitate such hooks, the gitit cabal\npackage includes an executable `expireGititCache`. Assuming you are\nrunning gitit at port 5001 on localhost, and the environment variable\n`CHANGED_FILES` contains a list of the files that have changed, you can\nexpire their cached versions using\n\n    expireGititCache http://localhost:5001 $CHANGED_FILES\n\nOr you can specify the files directly:\n\n    expireGititCache http://localhost:5001 \"Front Page.page\" foo/bar/baz.c\n\nThis program will return a success status (0) if the page has been\nsuccessfully expired (or if it was never cached in the first place),\nand a failure status (\u003e 0) otherwise.\n\nThe cache is persistent through restarts of gitit.  To expire all cached\npages, simply remove the `cache` directory.\n\nIdle\n----\n\nBy default, GHC's runtime will repeatedly attempt to collect garbage\nwhen an executable like Gitit is idle. This means that gitit will, after\nthe first page request, never use 0% CPU time and sleep, but will use\n~1%. This can be bad for battery life, among other things.\n\nTo fix this, one can disable the idle-time GC with the runtime flag\n`-I0`:\n\n    gitit -f my.conf +RTS -I0 -RTS\n\n\nNote:\n\nTo enable RTS, cabal needs to pass the compile flag `-rtsopts` to GHC while installing.\n\n    cabal install --reinstall gitit --ghc-options=\"-rtsopts\"\n\nUsing gitit with apache\n=======================\n\nMost users who run a public-facing gitit will want gitit to appear\nat a nice URL like `http://wiki.mysite.com` or\n`http://mysite.com/wiki` rather than `http://mysite.com:5001`.\nThis can be achieved using apache's `mod_proxy`.\n\nProxying to `http://wiki.mysite.com`\n------------------------------------\n\nSet up your DNS so that `http://wiki.mysite.com` maps to\nyour server's IP address. Make sure that the `mod_proxy`, `mod_proxy_http` and `mod_rewrite` modules are\nloaded, and set up a virtual host with the following configuration:\n\n    \u003cVirtualHost *\u003e\n        ServerName wiki.mysite.com\n        DocumentRoot /var/www/\n        RewriteEngine On\n        ProxyPreserveHost On\n        ProxyRequests Off\n    \n        \u003cProxy *\u003e\n           Order deny,allow\n           Allow from all\n        \u003c/Proxy\u003e\n    \n        ProxyPassReverse /    http://127.0.0.1:5001\n        RewriteRule ^(.*) http://127.0.0.1:5001$1 [P]\n    \n        ErrorLog /var/log/apache2/error.log\n        LogLevel warn\n    \n        CustomLog /var/log/apache2/access.log combined\n        ServerSignature On\n    \n    \u003c/VirtualHost\u003e\n\nReload your apache configuration and you should be all set.\n\nUsing nginx to achieve the same\n-------------------------------\n\nDrop a file called `wiki.example.com.conf` into `/etc/nginx/conf.d`\n(or where ever your distribution puts it).\n\n    server {\n        listen 80;\n        server_name wiki.example.com\n        location / {\n            proxy_pass        http://127.0.0.1:5001/;\n            proxy_set_header  X-Real-IP  $remote_addr;\n            proxy_redirect off;\n        }\n        access_log /var/log/nginx/wiki.example.com.log main;\n    }\n\nReload your nginx config and you should be all set.\n\n\nProxying to `http://mysite.com/wiki`\n------------------------------------\n\nMake sure the `mod_proxy`, `mod_headers`, `mod_proxy_http`,\nand `mod_proxy_html` modules are loaded. `mod_proxy_html`\nis an external module, which can be obtained [here]\n(http://apache.webthing.com/mod_proxy_html/). It rewrites URLs that\noccur in web pages. Here we will use it to rewrite gitit's links so that\nthey all begin with `/wiki/`.\n\nFirst, tell gitit not to compress pages, since `mod_proxy_html` needs\nuncompressed pages to parse. You can do this by setting the gitit\nconfiguration option\n\n    compress-responses: no\n\nSecond, modify the link in the `reset-password-message` in the\nconfiguration file:  instead of\n\n    http://$hostname$:$port$$resetlink$\n\nset it to\n\n    http://$hostname$/wiki$resetlink$\n\nRestart gitit.\n\nNow add the following lines to the apache configuration file for the\n`mysite.com` server:\n\n    # These commands will proxy /wiki/ to port 5001\n\n    ProxyRequests Off\n\n    \u003cProxy *\u003e\n      Order deny,allow\n      Allow from all\n    \u003c/Proxy\u003e\n\n    ProxyPass /wiki/ http://127.0.0.1:5001/\n\n    \u003cLocation /wiki/\u003e\n      SetOutputFilter  proxy-html\n      ProxyPassReverse /\n      ProxyHTMLURLMap  /   /wiki/\n      ProxyHTMLDocType html5\n      RequestHeader unset Accept-Encoding\n    \u003c/Location\u003e\n\nReload your apache configuration and you should be set.\n\nFor further information on the use of `mod_proxy_http` to rewrite URLs,\nsee the [`mod_proxy_html` guide].\n\n[`mod_proxy_html` guide]: http://apache.webthing.com/mod_proxy_html/guide.html\n\nUsing gitit as a library\n========================\n\nBy importing the module `Network.Gitit`, you can include a gitit wiki\n(or several of them) in another happstack application. There are some\nsimple examples in the haddock documentation for `Network.Gitit`.\n\nReporting bugs\n==============\n\nBugs may be reported (and feature requests filed) at\n\u003chttps://github.com/jgm/gitit/issues\u003e.\n\nThere is a mailing list for users and developers at\n\u003chttp://groups.google.com/group/gitit-discuss\u003e.\n\nAcknowledgements\n================\n\nA number of people have contributed patches:\n\n- Gwern Branwen helped to optimize gitit and wrote the\n  InterwikiPlugin. He also helped with the Feed module.\n- Simon Michael contributed the patch adding RST support.\n- Henry Laxen added support for password resets and helped with\n  the apache proxy instructions.\n- Anton van Straaten made the process of page generation\n  more modular by adding Gitit.ContentTransformer.\n- Robin Green helped improve the plugin API and interface, and\n  fixed a security problem with the reset password code.\n- Thomas Hartman helped improve the index page, making directory\n  browsing persistent, and fixed a bug in template recompilation.\n- Justin Bogner improved the appearance of the preview button.\n- Kohei Ozaki contributed the ImgTexPlugin.\n- Michael Terepeta improved validation of change descriptions.\n- mightybyte suggested making gitit available as a library,\n  and contributed a patch to ifLoggedIn that was needed to\n  make gitit usable with a custom authentication scheme.\n\nI am especially grateful to the darcs team for using darcsit for\ntheir public-facing wiki.  This has helped immensely in identifying\nissues and improving performance.\n\nGitit's default visual layout is shamelessly borrowed from Wikipedia.\nThe stylesheets are influenced by Wikipedia's stylesheets and by the\nbluetrip CSS framework (see BLUETRIP-LICENSE). Some of the icons in\n`img/icons` come from bluetrip as well.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgm%2Fgitit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjgm%2Fgitit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgm%2Fgitit/lists"}