Since 63523d00e8 (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 causes trouble if a file was partially staged,
or if we switch from the staged changes to the
unstaged changes.
It should be quick enough not to matter anyway, so
let's simplify things and remove the check.
This improves the diff performance by a factor of around 10. Things done
to do this are, among others:
* user String.replace(//g) instead of String.gsub(). It's
*much* faster
* Don't use anonymous inner functions for iteration, but instead
use for loops
* Don't use String.startsWith() if we can just compare a
single character
Because we are now so much faster, we can also show bigger diffs
by default.
e2210f7306e4c1647ff068f660db1674ce0391e1 (CommitView: Add a better reflog entry)
created a bug where an exception was thrown if you enter a one-lined commit
message.
This adds an entry in the form of
commit: CommitView: Add a better reflog entry
to the reflog upon commit, rather than
Commit from GitX
which isn't very informative
Previously, we would try to copy the view selector from within
the RepositoryWindow, so we could reuse it and change it if we
need to.
However, that causes problems if you have another window open:
if we try to add an item using the insertItemWithIdentifier:atIndex:
method, the item will be added to _all_ toolbars with the same
identifier, even if those toolbars already have the item!
As I see no easy way to fix that, we completely avoid the issue
by not inserting any objects and just copying the view selector
from view to view.
This reduces memory cost somewhat (10MB on the git.git repository),
while still keeping the same functionality :) Better would be to
use structs in a c array in the cellinfo, as the NSArray and
NSObject type information together now use more memory.