1. 16 Feb, 2016 1 commit
  2. 12 Feb, 2016 1 commit
  3. 17 Sep, 2015 1 commit
  4. 02 Jul, 2015 1 commit
  5. 16 Jun, 2015 1 commit
  6. 28 Apr, 2015 2 commits
  7. 06 Mar, 2015 1 commit
  8. 03 Mar, 2015 2 commits
  9. 13 Feb, 2015 1 commit
  10. 05 Feb, 2015 1 commit
  11. 16 Dec, 2014 1 commit
    • win32: use NT-prefixed "\\?\" paths · cceae9a2
      When turning UTF-8 paths into UCS-2 paths for Windows, always use
      the \\?\-prefixed paths.  Because this bypasses the system's
      path canonicalization, handle the canonicalization functions ourselves.
      
      We must:
       1. always use a backslash as a directory separator
       2. only use a single backslash between directories
       3. not rely on the system to translate "." and ".." in paths
       4. remove trailing backslashes, except at the drive root (C:\)
      Edward Thomson committed
  12. 13 Oct, 2014 1 commit
    • p_lstat win32: don't canonicalize volume mounts · 8d45b469
      A reparse point that is an IO_REPARSE_TAG_MOUNT_POINT could be
      a junction or an actual filesystem mount point.  (Who knew?)
      If it's the latter, its reparse point will report the actual
      volume information \??\Volume{GUID}\ and we should not attempt
      to dereference that further, instead readlink should report
      EINVAL since it's not a symlink / junction and its original
      path was canonical.
      
      Yes, really.
      Edward Thomson committed
  13. 05 Aug, 2014 2 commits
  14. 06 Jul, 2014 2 commits
  15. 04 Jun, 2014 1 commit
    • filebuf: make unlocking atomic · e58281aa
      When renaming a lock file to its final location, we need to make sure
      that it is replaced atomically.
      
      We currently have a workaround for Windows by removing the target file.
      This means that the target file, which may be a ref or a packfile, may
      cease to exist for a short wile, which shold be avoided.
      
      Implement the workaround only in Windows, by making sure that the file
      we want to replace is writable.
      Carlos Martín Nieto committed
  16. 16 May, 2014 2 commits
  17. 23 Apr, 2014 1 commit
  18. 22 Apr, 2014 1 commit
  19. 20 Apr, 2014 1 commit
  20. 27 Mar, 2014 1 commit
    • Retry renaming files on Access Denied errors · 2873a862
      When a file is open for reading (without shared-delete permission), and
      then a different thread/process called p_rename, that would fail, even
      if the file was only open for reading for a few milliseconds. This
      change lets p_rename wait up to 50ms for the file to be closed by the
      reader. Applies only to win32.
      
      This is especially important for git_filebuf_commit, because writes
      should not fail if the file is read simultaneously.
      
      Fixes #2207
      Jan Melcher committed
  21. 08 Oct, 2013 1 commit
    • More filemode cleanups for FAT on MacOS · 14997dc5
      This cleans up some additional issues.  The main change is that
      on a filesystem that doesn't support mode bits, libgit2 will now
      create new blobs with GIT_FILEMODE_BLOB always instead of being
      at the mercy to the filesystem driver to report executable or not.
      This means that if "core.filemode" lies and claims that filemode
      is not supported, then we will ignore the executable bit from the
      filesystem.  Previously we would have allowed it.
      
      This adds an option to the new git_repository_reset_filesystem to
      recurse through submodules if desired.  There may be other types
      of APIs that would like a "recurse submodules" option, but this
      one is particularly useful.
      
      This also has a number of cleanups, etc., for related things
      including trying to give better error messages when problems come
      up from the filesystem.  For example, the FAT filesystem driver on
      MacOS appears to return errno EINVAL if you attempt to write a
      filename with invalid UTF-8 in it.  We try to capture that with a
      better error message now.
      Russell Belfer committed
  22. 19 Aug, 2013 2 commits
  23. 16 Aug, 2013 1 commit
  24. 13 Aug, 2013 4 commits
  25. 08 Aug, 2013 2 commits
  26. 07 Aug, 2013 1 commit
  27. 05 Aug, 2013 1 commit
  28. 25 Jun, 2013 1 commit
  29. 12 Jun, 2013 1 commit
  30. 15 May, 2013 1 commit