1. 09 Aug, 2013 3 commits
    • Improve and comment git_ignore__pop_dir · 3bc3ed80
      This just cleans up the improved logic for popping ignore dirs
      and documents why the complex behavior is needed.
      Russell Belfer committed
    • Improve building ignore file lists · ba8b8c04
      The routines to push and pop ignore files while traversing a
      directory had some issues. In particular, setting up the initial
      list would sometimes push an ignore file before it ought to be
      applied if the starting path was a directory containing an ignore
      file. Also, the pop function was not always matching the right
      part of the path and would fail to pop ignores from the list in
      some cases.
      
      This adds some tests that exercise a particular problematic case
      and then fixes the problems that I could find related to this.
      
      At some point, I'd like to isolate this ignore rule management
      code and rewrite it, but that's a larger project and right now,
      I'll opt to just try to fix the broken behaviors.
      Russell Belfer committed
    • Revert PR #1462 and provide alternative fix · 4ba64794
      This rolls back the changes to fnmatch parsing from commit
      2e40a60e except for the tests
      that were added.  Instead this adds couple of new flags that can
      be passed in when attempting to parse an fnmatch pattern.  Also,
      this changes the pathspec match logic to special case matching a
      filename with a '!' prefix against a negative pattern.
      
      This fixes the build.
      Russell Belfer committed
  2. 19 Jun, 2013 1 commit
    • Add fn to check pathspec for ignored files · 85b8b18b
      Command line Git sometimes generates an error message if given a
      pathspec that contains an exact match to an ignored file (provided
      --force isn't also given).  This adds an internal function that
      makes it easy to check it that has happened.  Right now, I'm not
      creating a public API for this because that would get a little
      more complicated with a need for callbacks for all invalid paths.
      Russell Belfer committed
  3. 23 Apr, 2013 1 commit
  4. 15 Apr, 2013 1 commit
  5. 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
  6. 20 Nov, 2012 1 commit
  7. 15 Oct, 2012 1 commit
    • Fix single-file ignore checks · 52032ae5
      To answer if a single given file should be ignored, the path to
      that file has to be processed progressively checking that there
      are no intermediate ignored directories in getting to the file
      in question.  This enables that, fixing the broken old behavior,
      and adds tests to exercise various ignore situations.
      Russell Belfer committed
  8. 08 Oct, 2012 1 commit
  9. 17 Sep, 2012 1 commit
  10. 24 Aug, 2012 1 commit
  11. 22 Aug, 2012 2 commits
  12. 24 Jul, 2012 1 commit
  13. 11 Jun, 2012 1 commit
  14. 17 May, 2012 2 commits
  15. 04 May, 2012 1 commit
  16. 03 May, 2012 1 commit
    • Support reading attributes from index · f917481e
      Depending on the operation, we need to consider gitattributes
      in both the work dir and the index.  This adds a parameter to
      all of the gitattributes related functions that allows user
      control of attribute reading behavior (i.e. prefer workdir,
      prefer index, only use index).
      
      This fix also covers allowing us to check attributes (and
      hence do diff and status) on bare repositories.
      
      This was a somewhat larger change that I hoped because it had
      to change the cache key used for gitattributes files.
      Russell Belfer committed
  17. 26 Apr, 2012 1 commit
  18. 25 Apr, 2012 1 commit
  19. 30 Mar, 2012 1 commit
  20. 16 Mar, 2012 1 commit
  21. 14 Mar, 2012 1 commit
    • Convert attr and other files to new errors · ab43ad2f
      This continues to add other files to the new error handling
      style.  I think the only real concerns here are that there are
      a couple of error return cases that I have converted to asserts,
      but I think that it was the correct thing to do given the new
      error style.
      Russell Belfer committed
  22. 27 Feb, 2012 1 commit
    • buffer: Unify `git_fbuffer` and `git_buf` · 13224ea4
      This makes so much sense that I can't believe it hasn't been done
      before. Kill the old `git_fbuffer` and read files straight into
      `git_buf` objects.
      
      Also: In order to fully support 4GB files in 32-bit systems, the
      `git_buf` implementation has been changed from using `ssize_t` for
      storage and storing negative values on allocation failure, to using
      `size_t` and changing the buffer pointer to a magical pointer on
      allocation failure.
      
      Hopefully this won't break anything.
      Vicent Martí committed
  23. 22 Feb, 2012 1 commit
    • Fix iterators based on pull request feedback · 0534641d
      This update addresses all of the feedback in pull request #570.
      
      The biggest change was to create actual linked list stacks for
      storing the tree and workdir iterator state.  This cleaned up
      the code a ton.  Additionally, all of the static functions had
      their 'git_' prefix removed, and a lot of other unnecessary
      changes were removed from the original patch.
      Russell Belfer committed
  24. 21 Feb, 2012 1 commit
    • Uniform iterators for trees, index, and workdir · b6c93aef
      This create a new git_iterator type of object that provides a
      uniform interface for iterating over the index, an arbitrary
      tree, or the working directory of a repository.
      
      As part of this, git ignore support was extended to support
      push and pop of directory-based ignore files as the working
      directory is being traversed (so the array of ignores does
      not have to be recreated at each directory during traveral).
      
      There are a number of other small utility functions in buffer,
      path, vector, and fileops that are included in this patch
      that made the iterator implementation cleaner.
      Russell Belfer committed
  25. 31 Jan, 2012 1 commit
    • Fix attr path is_dir check · adc9bdb3
      When building an attr path object, the code that checks if the
      file is a directory was evaluating the file as a relative path
      to the current working directory, instead of using the repo root.
      This lead to inconsistent behavior.
      Russell Belfer committed
  26. 17 Jan, 2012 2 commits
    • Move path related functions from fileops to path · 1744fafe
      This takes all of the functions that look up simple data about
      paths (such as `git_futils_isdir`) and moves them over to path.h
      (becoming `git_path_isdir`).  This leaves fileops.h just with
      functions that actually manipulate the filesystem or look at
      the file contents in some way.
      
      As part of this, the dir.h header which is really just for win32
      support was moved into win32 (with some minor changes).
      Russell Belfer committed
    • Fix handling of relative paths for attrs · a51cd8e6
      Per issue #533, the handling of relative paths in attribute
      and ignore files was not right.  Fixed this by pre-joining
      the relative path of the attribute/ignore file onto the match
      string when a full path match is required.
      
      Unfortunately, fixing this required a bit more code than I
      would have liked because I had to juggle things around so that
      the fnmatch parser would have sufficient information to prepend
      the relative path when it was needed.
      Russell Belfer committed
  27. 16 Jan, 2012 1 commit
    • Patch cleanup for merge · cfbc880d
      After reviewing the gitignore support with Vicent, we came up
      with a list of minor cleanups to prepare for merge, including:
      
      * checking git_repository_config error returns
      * renaming git_ignore_is_ignored and moving to status.h
      * fixing next_line skipping to include \r skips
      * commenting on where ignores are and are not included
      Russell Belfer committed
  28. 12 Jan, 2012 3 commits
  29. 11 Jan, 2012 1 commit
    • Initial implementation of gitignore support · df743c7d
      Adds support for .gitignore files to git_status_foreach() and
      git_status_file().  This includes refactoring the gitattributes
      code to share logic where possible.  The GIT_STATUS_IGNORED flag
      will now be passed in for files that are ignored (provided they
      are not already in the index or the head of repo).
      Russell Belfer committed