libgit2/include/git2
Russell Belfer 41a82592ef Ranged iterators and rewritten git_status_file
The goal of this work is to rewrite git_status_file to use the
same underlying code as git_status_foreach.

This is done in 3 phases:

1. Extend iterators to allow ranged iteration with start and
   end prefixes for the range of file names to be covered.
2. Improve diff so that when there is a pathspec and there is
   a common non-wildcard prefix of the pathspec, it will use
   ranged iterators to minimize excess iteration.
3. Rewrite git_status_file to call git_status_foreach_ext
   with a pathspec that covers just the one file being checked.

Since ranged iterators underlie the status & diff implementation,
this is actually fairly efficient.  The workdir iterator does
end up loading the contents of all the directories down to the
single file, which should ideally be avoided, but it is pretty
good.
2012-05-15 14:34:15 -07:00
..
attr.h Fix memory leaks and use after free 2012-05-04 11:06:12 -07:00
blob.h blob: Add git_blob_create_fromdisk() 2012-05-13 11:28:49 +02:00
branch.h Typedefs don't have enum in front 2012-04-11 14:27:40 +02:00
commit.h commit/tag: ensure the message is cleaned up 2012-05-07 12:16:04 +02:00
common.h Revert "Specifiy dllimport to MSVC if we're not building libgit2.dll" 2012-05-14 22:15:53 +02:00
config.h config: Refactor & add git_config_get_mapped 2012-03-01 00:52:21 +01:00
diff.h diff: improve git_diff_blobs() documentation 2012-05-07 12:18:34 +02:00
errors.h Remove old and unused error codes 2012-05-02 19:56:38 -07:00
index.h Update Copyright header 2012-02-13 17:11:09 +01:00
indexer.h transports: buffer the git requests before sending them 2012-04-25 12:44:27 +02:00
inttypes.h msvc: Properly handle inttypes.h/stdint.h 2011-10-05 16:21:16 -04:00
merge.h Move git_merge_base() to is own header and document it 2012-04-12 20:25:25 +02:00
net.h Update Copyright header 2012-02-13 17:11:09 +01:00
notes.h notes: add git_notes_foreach() 2012-05-14 22:07:42 +02:00
object.h Update Copyright header 2012-02-13 17:11:09 +01:00
odb_backend.h Update Copyright header 2012-02-13 17:11:09 +01:00
odb.h Update Copyright header 2012-02-13 17:11:09 +01:00
oid.h Add missing GIT_EXTERN declarations 2012-05-14 19:56:35 +02:00
reflog.h Update Copyright header 2012-02-13 17:11:09 +01:00
refs.h Rename to git_reference_name_to_oid 2012-04-23 10:06:31 -07:00
refspec.h Add missing GIT_EXTERN declarations 2012-05-14 19:56:35 +02:00
remote.h remotes: change git_remote_new's signature 2012-05-08 21:36:40 +02:00
repository.h Refactor git_repository_open with new options 2012-04-11 12:11:35 -07:00
revwalk.h Move git_merge_base() to is own header and document it 2012-04-12 20:25:25 +02:00
signature.h Update Copyright header 2012-02-13 17:11:09 +01:00
status.h Ranged iterators and rewritten git_status_file 2012-05-15 14:34:15 -07:00
stdint.h msvc: Properly handle inttypes.h/stdint.h 2011-10-05 16:21:16 -04:00
submodule.h Improve config handling for diff,submodules,attrs 2012-03-30 14:40:50 -07:00
tag.h commit/tag: ensure the message is cleaned up 2012-05-07 12:16:04 +02:00
threads.h Update Copyright header 2012-02-13 17:11:09 +01:00
tree.h Add missing GIT_EXTERN declarations 2012-05-14 19:56:35 +02:00
types.h Add basic branch management API: git_branch_create(), git_branch_delete(), git_branch_list() 2012-04-10 21:39:03 +02:00
version.h Update Copyright header 2012-02-13 17:11:09 +01:00
windows.h Update Copyright header 2012-02-13 17:11:09 +01:00