# GitList: an elegant git repository viewer
Not by Apollia, but modified by Apollia.
<br>09:06:35 06/21/2018. Apollia's note: I hastily and messily modified this:
* To stop it from displaying email addresses.
* To make the .htaccess file work the way I wanted on my web host.
* To make it possible to store the config.ini file outside of the repo folder.
<br>02:02:48 06/27/2018. I made it so if the file "$HOME/apconfig/Gitolite/Default-Version/apstuff/List of most recently modified repos" exists, the repos listed inside it will be put at the top of GitList's list.
To build the list of most recently modified repos automatically, you can use a Gitolite trigger script, such as the one in this repo:
To use that Gitolite trigger script, you'll need to enable that trigger script in your Gitolite rc file, or use the Gitolite rc file included in that repo.
<br>03:07:12 07/10/2018. Now, if you're on a page related to a particular repo, that repo's name will be displayed in the title visible in the title bar of your web browser's window.
<br>I accomplished that by editing a Twig template named layout.twig. (Actually, I edited both copies of that file in this repo - I'm not sure which one GitList actually uses.)
I was surprised to find that my customizations weren't immediately displayed, unless I set "debug" to true in GitList's config.ini.
<br>But, from this page - [https://github.com/klaussilveira/gitlist/wiki/Customizing](https://github.com/klaussilveira/gitlist/wiki/Customizing) - I learned that to see my changes without using debug mode, I had to clear GitList's cache.
I did that by logging into my website's shell account, going to the $HOME/apollia.org/gitlist folder, and running these commands:
mv cache cache-aside
Then, my customized titles appeared.
<br>**Ideas for new features**
* 20:52:47 08/03/2019. A way for the user to easily choose between displaying the main list of repos in alphabetical order, or with the most recently modified repos at the top.
* 20:55:01 08/03/2019. An RSS feed, and perhaps even a web page, which shows all the most recent updates to any repo. (An XSLT sheet could be used to convert the RSS feed into a web page.)
* 21:28:09 08/03/2019. A theme with a dark background.
* 00:38:39 08/12/2019. An ini setting which lets you optionally stop GitList from providing .tar files.
* 00:40:41 08/12/2019. The URLs of old versions of a repo should be something like:
...instead of the way it currently is:
That will make it easier to block old-version GitList pages in robots.txt.
* 00:49:41 08/12/2019. It appears the reason the GitList cache can get so huge is not because of cached PHP pages, but because of old cached zip and tar archives of old versions of repos.
It might be nice to be able to cache only the zip files of tagged old versions.
* 00:55:01 08/12/2019. An ini setting which lets you store the cache in a different folder.
<br>End of text by Apollia.
GitList is an elegant and modern web interface for interacting with multiple git repositories. It allows you to browse repositories using your favorite browser, viewing files under different revisions, commit history, diffs. It also generates RSS feeds for each repository, allowing you to stay up-to-date with the latest changes anytime, anywhere. GitList was written in PHP, on top of the [Silex](http://silex.sensiolabs.org/) microframework and powered by the Twig template engine. This means that GitList is easy to install and easy to customize. Also, the GitList gorgeous interface was made possible due to [Bootstrap](http://twitter.github.com/bootstrap/).
* Multiple repository support
* Multiple branch support
* Multiple tag support
* Commit history, blame, diff
* RSS feeds
* Syntax highlighting
* Repository statistics
In order to run GitList on your server, you'll need:
* PHP 5.3+
* Webserver (Apache, nginx, lighttpd)
* Download GitList from [gitlist.org](http://gitlist.org/) and decompress to your `/var/www/gitlist` folder, or anywhere else you want to place GitList.
* Do not download a branch or tag from GitHub, unless you want to use the development version. The version available for download at the website already has all dependencies bundled, so you don't have to use composer or any other tool
* Rename the `config.ini-example` file to `config.ini`.
* Open up the `config.ini` and configure your installation. You'll have to provide where your repositories are located.
* In case GitList isn't accessed through the root of the website, open `.htaccess` and edit RewriteBase (for example, `/gitlist/` if GitList is accessed through http://localhost/gitlist/).
* Set file permissions for `.htaccess`
chmod 644 .htaccess
* Create the cache folder and give read/write permissions to your web server user:
chmod 777 cache
That's it, installation complete! If you're having problems, check the [Troubleshooting](https://github.com/klaussilveira/gitlist/wiki/Troubleshooting) page.
## Authors and contributors
* [Klaus Silveira](http://www.klaussilveira.com) (Creator, developer)
[New BSD license](http://www.opensource.org/licenses/bsd-license.php)
GitList uses [Composer](http://getcomposer.org/) to manage dependencies and [Ant](http://ant.apache.org/) to build the project.
Once you have all the dependencies set, you can clone the repository and run Ant:
git clone https://github.com/klaussilveira/gitlist.git
If you just want to get the project dependencies, instead of building everything:
git clone https://github.com/klaussilveira/gitlist.git
curl -s http://getcomposer.org/installer | php
php composer.phar install
If you have Composer in your path, things get easier. But you know the drill.
If you are a developer, we need your help. GitList is a young project and we have lots of stuff to do. Some developers are contributing with new features, others with bug fixes. But you can also dedicate yourself to refactoring the current codebase and improving what we already have. This is very important, we want GitList to be a state-of-the-art application, and we need your help for that.
* Stay tuned to possible bugs, suboptimal code, duplicated code, overcomplicated expressions and unused code
* Improve the test coverage by creating unit and functional tests
## Further information
If you want to know more about customizing GitList, check the [Customization](https://github.com/klaussilveira/gitlist/wiki/Customizing) page on the wiki. Also, if you're having problems with GitList, check the [Troubleshooting](https://github.com/klaussilveira/gitlist/wiki/Troubleshooting) page. Don't forget to report issues and suggest new features! :)