We already keep this dictionary in our repository. Rather than adding a pointer to it on every commit in our rev walk, just look it up lazily in the dictionary when we need to. That cuts down some time in the initial revwalk and also removes some stupid code :)
This merges functionality that was previously stored in the combination of PBGitCommitController / PBChangedFile to a dedicated controller, PBGitIndexController.
That's why it's there, after all. This also makes the system more robust and catches some more errors. The next thing this enables is to also allow right-clicking on refs in the commit list.
This fixes the -parseReference: method to return nil if there is an error in the git call. This also simplifies our commit controller.
Since 63523d0 (History view: Make lozenge of currently checked out branch (HEAD) bold, same as gitk.), -[PBGitRepository headRef] was called every time a cell needed redrawing. This made GitX slow overall, but especially when resizing the window. So, it's better to cache the value. We'll still reload it with an explicit refresh though.
This introduces the PBGitConfig class. It is KVC compliant as far as I can see, in that you can actually bind to it in IB and use ValueForKeyPath to retrieve values. It currently only handles strings; it should be possible to add functions to process booleans and numbers to it.
We already catch this in our code, so this was just confusing the debug output.
This is probably the most common non-branch GitX option, so let's add it by default
This changes a lot of code, so quick review: * RepositoryDocumentController now returns the document without selecting a ref * PBGitWindowController now optionally shows the default view, or selects no view at all * PBGitRepository keeps a pointer to its WindowController so that it can change views