- 09 Mar, 2013 1 commit
-
-
There is a serious bug in the previous tree iterator implementation. If case insensitivity resulted in member elements being equivalent to one another, and those member elements were trees, then the children of the colliding elements would be processed in sequence instead of in a single flattened list. This meant that the tree iterator was not truly acting like a case-insensitive list. This completely reworks the tree iterator to manage lists with case insensitive equivalence classes and advance through the items in a unified manner in a single sorted frame. It is possible that at a future date we might want to update this to separate the case insensitive and case sensitive tree iterators so that the case sensitive one could be a minimal amount of code and the insensitive one would always know what it needed to do without checking flags. But there would be so much shared code between the two, that I'm not sure it that's a win. For now, this gets what we need. More tests are needed, though.
Russell Belfer committed
-
- 07 Mar, 2013 5 commits
-
-
This standardizes iterator behavior across all three iterators (index, tree, and working directory). Previously the working directory iterator behaved differently from the other two. Each iterator can now operate in one of three modes: 1. *No tree results, auto expand trees* means that only non- tree items will be returned and when a tree/directory is encountered, we will automatically descend into it. 2. *Tree results, auto expand trees* means that results will be given for every item found, including trees, but you only need to call normal git_iterator_advance to yield every item (i.e. trees returned with pre-order iteration). 3. *Tree results, no auto expand* means that calling the normal git_iterator_advance when looking at a tree will not descend into the tree, but will skip over it to the next entry in the parent. Previously, behavior 1 was the only option for index and tree iterators, and behavior 3 was the only option for workdir. The main public API implications of this are that the `git_iterator_advance_into()` call is now valid for all iterators, not just working directory iterators, and all the existing uses of working directory iterators explicitly use the GIT_ITERATOR_DONT_AUTOEXPAND (for now). Interestingly, the majority of the implementation was in the index iterator, since there are no tree entries there and now have to fake them. The tree and working directory iterators only required small modifications.
Russell Belfer committed -
Since the case sensitivity is moved into the respective iterators, this removes the spoolandsort iterator code.
Russell Belfer committed -
The iterator APIs are not currently consistent with the parameter ordering of the rest of the codebase. This rearranges the order of parameters, simplifies the naming of a number of functions, and makes somewhat better use of macros internally to clean up the iterator code. This also expands the test coverage of iterator functionality, making sure that case sensitive range-limited iteration works correctly.
Russell Belfer committed -
Russell Belfer committed
-
Russell Belfer committed
-
- 06 Mar, 2013 8 commits
-
-
[RFC] basic note iterator implementation
Russell Belfer committed -
Nico von Geyso committed
-
* fixed style issues * use new iterator functions for git_note_foreach()
Nico von Geyso committed -
Philip Kelley committed
-
Nico von Geyso committed
-
* git_note_iterator_new() - create a new note iterator * git_note_next() - retrieves the next item of the iterator
Nico von Geyso committed -
remote push test fix
Vicent Martí committed -
Edward Thomson committed
-
- 05 Mar, 2013 5 commits
-
-
More tests (and fixes) for initializing repo from template
Vicent Martí committed -
Carlos Martín Nieto committed
-
Disable ignore_case when writing the index to a tree
Vicent Martí committed -
clear REUC on checkout
Vicent Martí committed -
Edward Thomson committed
-
- 03 Mar, 2013 5 commits
-
-
`git_diff_get_patch()` would unconditionally load the patch object and then simply leak it if the user hadn't requested it. Short-circuit loading the object if the user doesn't want it. The rest of the plugs are simply calling the free functions of objects allocated during the tests.
Carlos Martín Nieto committed -
indexer: use a hashtable for keeping track of offsets
Vicent Martí committed -
These offsets are needed for REF_DELTA objects, which encode which object they use as a base, but not where it lies in the packfile, so we need a list. These objects are mostly from older packfiles, before OFS_DELTA was widely spread. The time spent in indexing these packfiles is greatly reduced, though remains above what git is able to do.
Carlos Martín Nieto committed -
indexer: kill git_indexer
Vicent Martí committed -
This was the first implementation and its goal was simply to have something that worked. It is slow and now it's just taking up space. Remove it and switch the one known usage to use the streaming indexer.
Carlos Martín Nieto committed
-
- 02 Mar, 2013 4 commits
-
-
Update contributing and conventions
Vicent Martí committed -
Russell Belfer committed
-
When the examples/diff.c was written, there was not yet a revparse API. Now we can use it to make command line parsing way better with less code. Yay!
Russell Belfer committed -
The discussion about converting some of our foreach-style APIs to use iterator objects got me wanting to make a list of good starter projects. I put it in CONTRIBUTING.md and then went crazy with updates to that file and to CONVENTIONS.md.
Russell Belfer committed
-
- 01 Mar, 2013 8 commits
-
-
Allow empty config object and use it for tests
Vicent Martí committed -
This removes assertions that prevent us from having an empty git_config object and then updates some tests that were dependent on global config state to use an empty config before running anything.
Russell Belfer committed -
Philip Kelley committed
-
Control for core.autocrlf during testing
Philip Kelley committed -
Philip Kelley committed
-
Russell Belfer committed
-
Clone should not clean up directories it did not create
Vicent Martí committed -
Jameson Miller committed
-
- 28 Feb, 2013 4 commits
-
-
Why cdecl why?
Vicent Martí committed -
This fixes some snprintf and vsnprintf related deprecation warnings we've been having on Windows with recent compilers.
Russell Belfer committed -
This removes the one-off GIT_CDECL and adds a new standard way of doing this named GIT_STDLIB_CALL with a src/win32 specific def when on the Windows platform.
Russell Belfer committed -
Allows compilation in newer versions of MinGW that already defined it.
Vicent Marti committed
-