1. 27 Jul, 2013 1 commit
  2. 22 Jul, 2013 1 commit
  3. 11 Jul, 2013 1 commit
  4. 25 Jun, 2013 1 commit
  5. 24 Jun, 2013 1 commit
    • Work around reparse point stat issues · 32c12ea6
      In theory, p_stat should never return an S_ISLNK result, but due
      to the current implementation on Windows with mount points it is
      possible that it will.  For now, work around that by allowing a
      link in the path to a directory being created.  If it is really a
      problem, then the issue will be caught on the next iteration of
      the loop, but typically this will be the right thing to do.
      Russell Belfer committed
  6. 23 Jun, 2013 1 commit
  7. 14 Jun, 2013 1 commit
  8. 05 Jun, 2013 5 commits
    • Make mkdir early exit cases clearer · f7e56150
      There are two places where git_futils_mkdir should exit early or
      at least do less.  The first is when using GIT_MKDIR_SKIP_LAST
      and having that flag leave no directory left to create; it was
      being handled previously, but the behavior was subtle.  Now I put
      in a clear explicit check that exits early in that case.
      
      The second is when there is no directory to create, but there is
      a valid path that should be verified.  I shifted the logic a bit
      so we'll be better about not entering the loop than that happens.
      Russell Belfer committed
    • Simplify git_futils_mkdir · 999d4405
      This routine was (is) pretty complicated, but given the recent
      changes, it seemed like it could be simplified a bit.
      Russell Belfer committed
    • I'm a dick · 2e1fa15f
      Vicent Marti committed
    • Ensure git_futils_mkdir won't mkdir root · b832ecf7
      This makes sure that git_futils_mkdir always skips over the root
      directory at a minimum, even on platforms where the root is not
      simply '/'.  Also, this removes the GIT_WIN32 ifdef in favor of
      making EACCES as a potentially recoverable error on all platforms.
      Russell Belfer committed
    • Allow creation of directories under the volume root in Win32 · daf98cb2
      We ran into an issue where cloning a repository to a folder
      directly underneath the root of a volume (e.g. 'd:\libgit2')
      would fail with an access denied error. This was traced down
      to a call to make a directory that is the root (e.g. 'd:') could
      return an error indicated access denied instead of an error
      indicating the path already exists. This change now handles
      the access denied error on Win32 and checks for the existence
      of the folder.
      Jameson Miller committed
  9. 20 May, 2013 1 commit
    • Add more diff rename detection tests · 4742148d
      This adds a bunch more rename detection tests including checks
      vs the working directory, the new exact match options, some more
      whitespace variants, etc.
      
      This also adds a git_futils_writebuffer helper function and uses
      it in checkout.  This is mainly added because I wanted an easy
      way to write out a git_buf to disk inside my test code.
      Russell Belfer committed
  10. 03 May, 2013 1 commit
  11. 01 May, 2013 1 commit
  12. 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
  13. 17 Mar, 2013 1 commit
  14. 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
  15. 01 Mar, 2013 1 commit
  16. 27 Feb, 2013 1 commit
    • Make mode handling during init more like git · 18f08264
      When creating files, instead of actually using GIT_FILEMODE_BLOB
      and the other various constants that happen to correspond to
      mode values, apparently I should be just using 0666 and 0777, and
      relying on the umask to clear bits and make the value sane.
      
      This fixes the rules for copying a template directory and fixes
      the checks to match that new behavior.  (Further changes to the
      checkout logic to follow separately.)
      Russell Belfer committed
  17. 26 Feb, 2013 1 commit
    • Fix initialization of repo directories · 3c42e4ef
      When PR #1359 removed the hooks from the test resources/template
      directory, it made me realize that the tests for
      git_repository_init_ext using templates must be pretty shabby
      because we could not have been testing if the hooks were getting
      created correctly.
      
      So, this started with me recreating a couple of hooks, including
      a sample and symlink, and adding tests that they got created
      correctly in the various circumstances, including with the SHARED
      modes, etc.  Unfortunately this uncovered some issues with how
      directories and symlinks were copied and chmod'ed.  Also, there
      was a FIXME in the code related to the chmod behavior as well.
      
      Going back over the directory creation logic for setting up a
      repository, I found it was a little difficult to read and could
      result in creating and/or chmod'ing directories that the user
      almost certainly didn't intend.
      
      So that let to this work which makes repo initialization much
      more careful (and hopefully easier to follow).  It required a
      couple of extensions / changes to core fileops utilities, but I
      also think those are for the better, at least for git_futils_cp_r
      in terms of being careful about what actions it takes.
      Russell Belfer committed
  18. 22 Feb, 2013 1 commit
  19. 01 Feb, 2013 1 commit
  20. 09 Jan, 2013 1 commit
    • Resolve crash with diff against empty file · de590550
      It is not legal inside our `p_mmap` function to mmap a zero length
      file.  This adds a test that exercises that case inside diff and
      fixes the code path where we would try to do that.
      
      The fix turns out not to be a lot of code since our default file
      content is already initialized to "" which works in this case.
      
      Fixes #1210
      Russell Belfer committed
  21. 08 Jan, 2013 1 commit
  22. 04 Jan, 2013 1 commit
    • More checkout improvements · 7e5c8a5b
      This flips checkout back to be driven off the changes between
      the baseline and the target trees.  This reinstates the complex
      code for tracking the contents of the working directory, but
      overall, I think the resulting logic is easier to follow.
      Russell Belfer committed
  23. 15 Nov, 2012 1 commit
    • Add POSIX compat lstat() variant for win32 · cccacac5
      The existing p_lstat implementation on win32 is not quite POSIX
      compliant when setting errno to ENOTDIR.  This adds an option to
      make is be compliant so that code (such as checkout) that cares
      to have separate behavior for ENOTDIR can use it portably.
      
      This also contains a couple of other minor cleanups in the
      posix_w32.c implementations to avoid unnecessary work.
      Russell Belfer committed
  24. 09 Nov, 2012 2 commits
    • Rework checkout with new strategy options · ad9a921b
      This is a major reworking of checkout strategy options.  The
      checkout code is now sensitive to the contents of the HEAD tree
      and the new options allow you to update the working tree so that
      it will match the index content only when it previously matched
      the contents of the HEAD.  This allows you to, for example, to
      distinguish between removing files that are in the HEAD but not
      in the index, vs just removing all untracked files.
      
      Because of various corner cases that arise, etc., this required
      some additional capabilities in rmdir and other utility functions.
      
      This includes the beginnings of an implementation of code to read
      a partial tree into the index based on a pathspec, but that is
      not enabled because of the possibility of creating conflicting
      index entries.
      Russell Belfer committed
    • Extensions to rmdir and mkdir utilities · 331e7de9
      * Rework GIT_DIRREMOVAL values to GIT_RMDIR flags, allowing
        combinations of flags
      * Add GIT_RMDIR_EMPTY_PARENTS flag to remove parent dirs that
        are left empty after removal
      * Add GIT_MKDIR_VERIFY_DIR to give an error if item is a file,
        not a dir (previously an EEXISTS error was ignored, even for
        files) and enable this flag for git_futils_mkpath2file call
      * Improve accuracy of error messages from git_futils_mkdir
      Russell Belfer committed
  25. 31 Oct, 2012 2 commits
  26. 30 Oct, 2012 1 commit
    • Add git_config_refresh() API to reload config · 744cc03e
      This adds a new API that allows users to reload the config if the
      file has changed on disk.  A new config callback function to
      refresh the config was added.
      
      The modified time and file size are used to test if the file needs
      to be reloaded (and are now stored in the disk backend object).
      
      In writing tests, just using mtime was a problem / race, so I
      wanted to check file size as well.  To support that, I extended
      `git_futils_readbuffer_updated` to optionally check file size in
      addition to mtime, and I added a new function `git_filebuf_stats`
      to fetch the mtime and size for an open filebuf (so that the
      config could be easily refreshed after a write).
      
      Lastly, I moved some similar file checking code for attributes
      into filebuf.  It is still only being used for attrs, but it
      seems potentially reusable, so I thought I'd move it over.
      Russell Belfer committed
  27. 19 Oct, 2012 1 commit
    • Fix env variable tests with new Win32 path rules · 0d422ec9
      The new Win32 global path search was not working with the
      environment variable tests.  But when I fixed the test, the new
      codes use of getenv() was causing more failures (presumably because
      of caching on Windows ???).  This fixes the global file lookup to
      always go directly to the Win32 API in a predictable way.
      Russell Belfer committed
  28. 16 Oct, 2012 1 commit
  29. 09 Oct, 2012 1 commit
    • Add complex checkout test and then fix checkout · 0d64bef9
      This started as a complex new test for checkout going through the
      "typechanges" test repository, but that revealed numerous issues
      with checkout, including:
      
      * complete failure with submodules
      * failure to create blobs with exec bits
      * problems when replacing a tree with a blob because the tree
        "example/" sorts after the blob "example" so the delete was
        being processed after the single file blob was created
      
      This fixes most of those problems and includes a number of other
      minor changes that made it easier to do that, including improving
      the TYPECHANGE support in diff/status, etc.
      Russell Belfer committed
  30. 02 Oct, 2012 2 commits
  31. 29 Sep, 2012 2 commits