Slower machines will update more often and faster ones will do more work in each update.
This is a convenience class to replace using NSStrings to store and compare SHAs. PBGitSHA has a much faster isEqual: function. It is <NSCopying> compliant and implements isEqual: and hash so it can be used as a key in dictionaries.
If the commit's detail is not UTF8 then PBWebHistoryController's commitDetailsLoaded: method will drop down to Latin1. That can cause character's in the committer's name to not be converted correctly. Move parsing the name to PBGitRevList where the correct encoding can be determined.
- filters for All, Local/Remote, and the selected branch - "Local" includes both branches and tags - "Remote" includes all branches from the same remote as the selected remote branch (i.e. not other remotes) Changes to make the above work: - add a history list class between the repository and rev list - store a project rev list with all the commits from the project - use the project rev list to graph the history for individual branches when there have been no changes - use a different rev list to show non-simple revs (history of a file, revs from the gitx tool) - update the commits in chunks to a mutable array so the table view's array controller has less work to do - only update the project rev list from git when actually necessary - don't add the All Branches and Local Branches revs to the branches array - some changes related to forcing the project's rev list to update when changes are made - some changes related to not causing updates too often - store the selected filter in user defaults - when the graphing is done select the commit for the branch