1. 05 Nov, 2013 2 commits
  2. 01 Nov, 2013 1 commit
  3. 03 Oct, 2013 5 commits
    • More cleanups to remove WIN assumptions · b8f9059d
      This cleans up more of the test suite to check actual filesystem
      behavior instead of relying on Windows vs. Mac vs. Linux to test.
      Russell Belfer committed
    • Clean up annoying warnings · af302aca
      The indexer code was generating warnings on Windows 64-bit.  I
      looked closely at the logic and was able to simplify it a bit.
      
      Also this fixes some other Windows and Linux warnings.
      Russell Belfer committed
    • Wrap iconv stuff and write tests · 618b7689
      This adds a simple wrapper around the iconv APIs and uses it
      instead of the old code that was inlining the iconv stuff.  This
      makes it possible for me to test the iconv logic in isolation.
      A "no iconv" version of the API was defined with macros so that
      I could have fewer ifdefs in the code itself.
      Russell Belfer committed
    • Simplify git_path_is_empty_dir implementation · d0849f83
      This simplifies git_path_is_empty_dir on both Windows (getting rid
      of git_buf allocation inside the function) and other platforms (by
      just using git_path_direach), and adds tests for the function, and
      uses the function to simplify some existing tests.
      Russell Belfer committed
    • Initial iconv hookup for precomposed unicode · 219d3457
      This hooks up git_path_direach and git_path_dirload so that they
      will take a flag indicating if directory entry names should be
      tested and converted from decomposed unicode to precomposed form.
      This code will only come into play on the Apple platform and even
      then, only when certain types of filesystems are used.
      
      This involved adding a flag to these functions which involved
      changing a lot of places in the code.
      
      This was an opportunity to do a bit of code cleanup here and there,
      for example, getting rid of the git_futils_cleanupdir_r function in
      favor of a simple flag to git_futils_rmdir_r to not remove the top
      level entry.  That ended up adding depth tracking during rmdir_r
      which led to a safety check for infinite directory recursion.  Yay.
      
      This hasn't actually been tested on the Mac filesystems where the
      issue occurs.  I still need to get test environment for that.
      Russell Belfer committed
  4. 24 Sep, 2013 1 commit
  5. 17 Sep, 2013 1 commit
    • Start of filter API + git_blob_filtered_content · 0cf77103
      This begins the process of exposing git_filter objects to the
      public API.  This includes:
      
      * new public type and API for `git_buffer` through which an
        allocated buffer can be passed to the user
      * new API `git_blob_filtered_content`
      * make the git_filter type and GIT_FILTER_TO_... constants public
      Russell Belfer committed
  6. 04 Sep, 2013 1 commit
  7. 03 Sep, 2013 3 commits
  8. 28 Aug, 2013 1 commit
  9. 27 Aug, 2013 1 commit
  10. 24 Aug, 2013 1 commit
  11. 22 Aug, 2013 2 commits
  12. 21 Aug, 2013 1 commit
  13. 20 Aug, 2013 1 commit
    • Add sorted cache data type · 0b7cdc02
      This adds a convenient new data type for caching the contents of
      file in memory when each item in that file corresponds to a name
      and you need to both be able to lookup items by name and iterate
      over them in some sorted order.  The new data type has locks in
      place to manage usage in a threaded environment.
      Russell Belfer committed
  14. 19 Aug, 2013 2 commits
  15. 31 Jul, 2013 1 commit
    • Major rename detection changes · d730d3f4
      After doing further profiling, I found that a lot of time was
      being spent attempting to insert hashes into the file hash
      signature when using the rolling hash because the rolling hash
      approach generates a hash per byte of the file instead of one
      per run/line of data.
      
      To optimize this, I decided to convert back to a run-based file
      signature algorithm which would be more like core Git.
      
      After changing this, a number of the existing tests started to
      fail.  In some cases, this appears to have been because the test
      was coded to be too specific to the particular results of the file
      similarity metric and in some cases there appear to have been bugs
      in the core rename detection code where only by the coincidence
      of the file similarity scoring were the expected results being
      generated.
      
      This renames all the variables in the core rename detection code
      to be more consistent and hopefully easier to follow which made it
      a bit easier to reason about the behavior of that code and fix the
      problems that I was seeing.  I think it's in better shape now.
      
      There are a couple of tests now that attempt to stress test the
      rename detection code and they are quite slow.  Most of the time
      is spent setting up the test data on disk and in the index.  When
      we roll out performance improvements for index insertion, it
      should also speed up these tests I hope.
      Russell Belfer committed
  16. 10 Jul, 2013 1 commit
    • Basic bit vector · 6fc5a581
      This is a simple bit vector object that is not resizable after
      the initial allocation but can be of arbitrary size.  It will
      keep the bti vector entirely on the stack for vectors 64 bits
      or less, and will allocate the vector on the heap for larger
      sizes.  The API is uniform regardless of storage location.
      
      This is very basic right now and all the APIs are inline functions,
      but it is useful for storing an array of boolean values.
      Russell Belfer committed
  17. 09 Jul, 2013 1 commit
  18. 17 Jun, 2013 1 commit
  19. 29 May, 2013 1 commit
  20. 29 Apr, 2013 2 commits
    • Add git_oid_strcmp and use it for git_oid_streq · aa8f0101
      Add a new git_oid_strcmp that compares a string OID with a hex
      oid for sort order, and then reimplement git_oid_streq using it.
      This actually should speed up git_oid_streq because it only reads
      as far into the string as it needs to, whereas previously it would
      convert the whole string into an OID and then use git_oid_cmp.
      Russell Belfer committed
    • Fix fragile git_oid_ncmp · 8564a022
      git_oid_ncmp was making some assumptions about the length of
      the data - this shifts the check to the top of the loop so it
      will work more robustly, limits the max, and adds some tests
      to verify the functionality.
      Russell Belfer committed
  21. 22 Apr, 2013 2 commits
  22. 25 Mar, 2013 3 commits
  23. 21 Mar, 2013 2 commits
  24. 18 Mar, 2013 2 commits
    • Fixes and cleanups · 32460251
      Get rid of some dead code, tighten things up a bit, and fix a bug
      with core::env test.
      Russell Belfer committed
    • Switch search paths to classic delimited strings · 41954a49
      This switches the APIs for setting and getting the global/system
      search paths from using git_strarray to using a simple string with
      GIT_PATH_LIST_SEPARATOR delimited paths, just as the environment
      PATH variable would contain.  This makes it simpler to get and set
      the value.
      
      I also added code to expand "$PATH" when setting a new value to
      embed the old value of the path.  This means that I no longer
      require separate actions to PREPEND to the value.
      Russell Belfer committed
  25. 15 Mar, 2013 1 commit
    • Implement global/system file search paths · 5540d947
      The goal of this work is to expose the search logic for "global",
      "system", and "xdg" files through the git_libgit2_opts() interface.
      
      Behind the scenes, I changed the logic for finding files to have a
      notion of a git_strarray that represents a search path and to store
      a separate search path for each of the three tiers of config file.
      For each tier, I implemented a function to initialize it to default
      values (generally based on environment variables), and then general
      interfaces to get it, set it, reset it, and prepend new directories
      to it.
      
      Next, I exposed these interfaces through the git_libgit2_opts
      interface, reusing the GIT_CONFIG_LEVEL_SYSTEM, etc., constants
      for the user to control which search path they were modifying.
      There are alternative designs for the opts interface / argument
      ordering, so I'm putting this phase out for discussion.
      
      Additionally, I ended up doing a little bit of clean up regarding
      attr.h and attr_file.h, adding a new attrcache.h so the other two
      files wouldn't have to be included in so many places.
      Russell Belfer committed