* insta-decorate:
Add framework to support removing refs
Show refs in HTML view
Allow copy and pasting of web source by pressing 'c'
Refactor cellInfo structure
Only decorate if we need to
Multithread test
Add objective c diff header
Conflicts:
GitX.xcodeproj/project.pbxproj
This makes the PBGitRevisionCell a bit nicer by retrieving all values
from the PBGitCommit object itself, and using another NSTextFieldCell to
draw the text.
This mean that PBGitGrapher now stores its information in the PBGitCommit's,
rather than in a custom grapher array. Also, because we don't need the
grapher to display refs anymore, the ref labels are also displayed when
using path limiting (for example, 'gitx -- Makefile').
This removes the 'Avoid empty selection' attribute on the branch controller.
This should hopefully help with selecting the default branch correctly in
the menu.
Multiple repositories can now be opened by using the File → Open… menu option.
Each document is a PBGitRepository with a PBDetailController controlling the window. PBRepositoryDocumentController is the document controller.
When launched, the application will attempt to open a repository with the current directory as its path. If this fails it will display an open panel to allow the user to select one.
PBDetailController is the window controller, and now takes ownership of the repository so we can bind to it through File’s Owner in the nib file. Currently the ApplicationController creates a new PBDetailController at startup with the opened repository.
The revision walking code made the PBGitRepository unclean. Especially if
we want to keep multiple PBGitRepository objects around (e.g. persistent
data store), it needs to be more simple. This neatly extracts the revision
walking code from the repository code.
This uses the C fgets() over the weird readLine implementation I found.
It speeds up the rev-parsing significantly: we went from ~4.5 seconds
on the git.git repo to ~0.95 seconds. And that's with the secret new date
parsing!
Subclasses NSOutlineView to PBQLOutlineView that takes a controller which
should respond to toggleQuickLook:. This is used for our tree walker to
actually show QuickLook when space is pressed.
This adds a QuickLook button that will allow you to directly view any file in
the tree view in QuickLook. This is really nice for PDF's and images. You can
select multiple files and even play a slideshow if you want.
Currently it does not remove temporary files it created. This means that they
will probably stay around until you reboot.
This controller makes sure that only the current view
receives its notifications. Therefore we won't do any work that we don't
see, like parsing diffs or asking for trees. This makes everything quicker.
This includes the prototype library in the bundle for convenience.
Whenever a new commit is selected, a new Commit object is created that
is going to parse the raw message. From the object we can select
author information, diffs, etc.
Currently there is still a bug with commits without content changes.