1. 14 Mar, 2013 1 commit
    • Improved tree iterator internals · 0c468633
      This updates the tree iterator internals to be more efficient.
      
      The tree_iterator_entry objects are now kept as pointers that are
      allocated from a git_pool, so that we may use git__tsort_r for
      sorting (which is better than qsort, given that the tree is
      likely mostly ordered already).
      
      Those tree_iterator_entry objects now keep direct pointers to the
      data they refer to instead of keeping indirect index values.  This
      simplifies a lot of the data structure traversal code.
      
      This also adds bsearch to find the start item position for range-
      limited tree iterators, and is more explicit about using
      git_path_cmp instead of reimplementing it.  The git_path_cmp
      changed a bit to make it easier for tree_iterators to use it (but
      it was barely being used previously, so not a big deal).
      
      This adds a git_pool_free_array function that efficiently frees a
      list of pool allocated pointers (which the tree_iterator keeps).
      Also, added new tests for the git_pool free list functionality
      that was not previously being tested (or used).
      Russell Belfer committed
  2. 13 Mar, 2013 2 commits
    • Merge pull request #1411 from arrbee/workdir-iterator-depth-limit-bug · 6950dca4
      Fix workdir iterator bugs
      Vicent Martí committed
    • Fix workdir iterator bugs · bbb13646
      This fixes two bugs with the workdir iterator depth check: first
      that the depth was not being decremented and second that empty
      directories were counting against the depth even though a frame
      was not being created for them.
      
      This also fixes a bug with the ENOTFOUND return code for workdir
      iterators when you attempt to advance_into an empty directory.
      Actually, that works correctly, but it was incorrectly being
      propogated into regular advance() calls in some circumstances.
      
      Added new tests for the above that create a huge hierarchy on
      the fly and try using the workdir iterator to traverse it.
      Russell Belfer committed
  3. 12 Mar, 2013 5 commits
  4. 11 Mar, 2013 10 commits
  5. 10 Mar, 2013 1 commit
  6. 09 Mar, 2013 3 commits
    • Merge pull request #1175 from carlosmn/diff-0-ctx · 57e765b2
      Can't perform diff with no context lines
      Russell Belfer committed
    • diff: allow asking for diffs with no context · 1aa5318a
      Previously, 0 meant default. This is problematic, as asking for 0
      context lines is a valid thing to do.
      
      Change GIT_DIFF_OPTIONS_INIT to default to three and stop treating 0
      as a magic value. In case no options are provided, make sure the
      options in the diff object default to 3.
      Carlos Martín Nieto committed
    • Make tree iterator handle icase equivalence · e40f1c2d
      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
  7. 08 Mar, 2013 1 commit
  8. 07 Mar, 2013 14 commits
  9. 06 Mar, 2013 3 commits