* pu/pb/git_version:
cli-tool: Hint at another error if there is a git binary
Move CLI files to cli group
GitBinary: Add git version information
gitx-cli: add a --version option
This will show something like
Vienna:~ pieter$ gitx
Error opening repository at /Users/pieter: Could not create document. Perhaps this isn't a git repository?
if you try to open GitX in a directory that isn't supported.
That should be more helpful than the suggestion that GitX can't
find a binary.
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 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.
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.