## Roadmap

This is not exactly a formal roadmap but it is a priority list of what might be implemented in future releases.  
This list is volatile.

### TODO (high priority)

* Eclipse: create plugin to enumerate repositories and delegate cloning to EGit
* Manager: support federation RPCs
* Manager: redesign ref indicators in log, search, and activity views to support multiple local branches, remote branches, and tags
* Gitblit: Lucene integration with multi-repository search (issue 16)
* Gitblit: Serve repositories on root URL rather than /git (investigate JGit 1.2 GitFilter)

### TODO (medium priority)

* Gitblit: editable settings page in GO/WAR
* Gitblit: investigate create-repository-on-push.
    * Maybe a new user role to allow this?
    * Maybe a server setting to disable this completely?
    * Pusher/Creator becomes repository owner and can then manipulate access lists, etc?
* Gitblit: Clone Repository feature (issue 5)
    * optional scheduled pulls
    * optional automatic push to origin/remotes?
    * optional manual push to origin/remotes?
* Gitblit: Repository regex substitutions should be stored in .git/.config, not gitblit.properties
* Gitblit: Consider allowing git:// protocol using JGit
    * new setting *git.allowGitProtocol* to enable/disable git:// protocol
    * unrestricted repositories would have anonymous RW git:// access
    * push-restricted repositories would have anonymous R git:// access
    * clone-restricted repositories would prohibit git:// access
    * view-restricted repositories would prohibit git:// access

### IDEAS

* Gitblit: Re-use the EGit branch visualization table cell renderer as some sort of servlet
* Gitblit: Support personal repositories (~username/repo)
* Gitblit: diff should highlight inserted/removed fragment compared to original line
* Gitblit: implement branch permission controls as Groovy pre-receive script.  
*Maintain permissions text file similar to a gitolite configuration file or svn authz file.*
* Gitblit: consider user-subscribed email notifications for a repository branch.  
* Gitblit: aggregate RSS feeds by tag or subfolder
* Gitblit: Consider creating more Git model objects and exposing them via the JSON RPC interface to allow inspection/retrieval of Git commits, Git trees, etc from Gitblit.
* Gitblit: Blame coloring by author (issue 2)
* Gitblit: View binary files in blob page (issue 6)
* Gitblit: Stronger ticgit integration (issue 8)
