I don't care much about code review, but it's a close enough attractor to the space of code reading that it seems to be draining attention. So let me hijack this topic and post a request for product (I'd write it myself, but priorities... adult life sucks hard).

--

I dream of a tool that facilitates code reading and exploration. It has some similar features with code review tools, namely:

- integration with version control systems

- basic semantic search/navigation

- looks clean

- not meant to be for writing code

But my dream tool also has following features I haven't seen implemented in any code review tool (or anywhere):

- annotations - not just "comments", but the ability to tag lines, to strike them out, highlight, color, scribble on them, etc. - basically anything you'd do with a printout of a code

- easy way to review history of a single file (with annotations)

- ability to easily bookmark areas / pieces of code and use those bookmarks in comments / annotations

- ability for viewing structural diagrams of the codebase

- full blown semantic search - who calls, calls who, etc.

- project-structure-oriented, not repository-history/commit-oriented

Basically, I'd love a tool not for collaboration, but for individual work - a tool that would facilitate exploring and familiarizing yourself with big codebases, as well as empower one when the time comes to do bigger refactorings.

Would be doubly useful if I could use it on a tablet, so that I could get up from in front of my computer to go and think about the changes I'm about to make (right now, I end up actually printing code if I have to refactor something very messy).

Right now, I would take a button to go to the previous revision of a file, showing the full file with the diff underneath. That way I could very easily 'browse' through the history of a file to find out things like when a particular change got introduced or just get a feel for its history. Why on earth don't github/bitbucket provide this? Surely it's a reasonable and common requirement? Or is there something inherent to git that makes it too awkward?

Some (if not most) GUI Git tools should do this, e.g. I personally use Git Extensions[1] which shows history and diff side-by-side.

For what it's worth, features like that (along with, say, line-by-line staging) are the reason why I usually use a GUI client and only drop down to the command line when necessary.

[1] https://github.com/gitextensions/gitextensions