* pu/pb/index_refactor: (24 commits)
PBGitIndex: post notifications when index stuff fails
GitIndexController: reorder methods a bit, remove unnecessary stuff
PBGitIndex: Migrate discardChanges to the GitIndex
CommitController: Make commit message editable after commit failed
GitIndex: Fix a few comments
GitIndex: explicitly tell when stuff is updated
Remove cruft
Show previous commit message when amending
CommitController: Empty commit title when commit is successful
CommitView: Remove cruft
Add failed commit notifications
GitIndex: add commit notifications
CommitController: Add status messages for index operations
GitIndex: Add a few notifications
CommitView: Migrate patch apply stuff to GitIndex
GitIndex: Add support for applying patches
CommitController: Replace commit method with the one from GitIndex
GitIndex: add basic commit method
GitIndexController: Migrate stageFiles functions to GitIndex
GitIndex: Add methods to stage and unstage files
...
Conflicts:
PBGitCommitController.m
PBGitIndexController.h
PBGitIndexController.m
* stable:
HistoryView: Don't show the 'loading commit' thing until after 500 ms.
HistoryView: Remove raw view
HistoryView: don't load in commit information in a separate thread anymore
Fix UTF-8 bug in NSString_RegEx
CommitView: Don't keep rearranging when iterating over files
IndexController: de-privatize the index-stopping stuff
I've seen this hang or crash a few times, so I hope this works better.
Instead of running a task in a separate thread, we just let it go through
the run loop and catch it when the task is done.
This ruins the second subview in the history view, but I don't think
anybody ever used that, so I'm going to remove it.
This class would use the location information provided by
regex(3) as range for for a substring. However, the information
regex(3) returns is a byte-based, while NSString works on characters.
This can cause a problem when there are UTF-8 characters in the string,
as the wrong subsstring will be returned.
This is fixed by taking the UTF bytesequence, and extracting a substring
from that, rather than using NSString's own substring method
These are mostly copies from PBGitIndexController, and
they can be refactored to a common method. I'm not sure of a name
for that yet, so I'll keep it like this for now :)
It's very difficult to determine whether or not we have a path specifier.
Because it's so difficult, it's better to just always run --children. A quick
test indicates that it doesn't matter much in run-time, and it's better to be
conservative in what we accept than to show bogus lines because the children
haven't been rewritten.
Some people have had Serif-fonts in their interface where no specific
fonts for classes/ids were specified. This sets the default-font to
'Lucida Grande' in order to have a nice non-serif on any system.
Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
This uses the same mechanisms as git to determine whether a file is
binary: By simply searching the first 8000 bytes for a 0-byte. This
gets rid of the call to "file" and is a much cleaner and shorter
implementation.
Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
Git 1.6.0 was released over a year ago now, so it shouldn't be too hard
to get people to upgrade to that. We need 1.6.0 for the --children revlist
option.
Requiring Git 1.6.0 or higher means we can also revert
a94981f35 (RevList: Don't rely on the presence of %x00) sometime.
This patch prevents the plaintext display of files with binary content
in tree-view by connecting the content to the textContents attribute.
PBGitTree is extended with the method textContents, which returns the
textual representation of a PBGitTree-object. The methods first checks
the output of "git check-attr binary <file>" to see if the user
set/unset the binary attribute manually. Then it checks for common
binary file-extensions. If this method can't determine whether the file
is binary, the file-content is loaded and Unix "file" is run on the
first 100 bytes of the file to make a decision.
It also adds the -[PBGitTree fileSize] method to check the size
of the file before actually loading its contents.
Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
Edited-by: Pieter de Bie <pdebie@ai.rug.nl>