1. 29 Dec, 2014 1 commit
  2. 19 Dec, 2014 1 commit
  3. 16 Dec, 2014 2 commits
    • checkout: disallow bad paths on win32 · a64119e3
      Disallow:
       1. paths with trailing dot
       2. paths with trailing space
       3. paths with trailing colon
       4. paths that are 8.3 short names of .git folders ("GIT~1")
       5. paths that are reserved path names (COM1, LPT1, etc).
       6. paths with reserved DOS characters (colons, asterisks, etc)
      
      These paths would (without \\?\ syntax) be elided to other paths - for
      example, ".git." would be written as ".git".  As a result, writing these
      paths literally (using \\?\ syntax) makes them hard to operate with from
      the shell, Windows Explorer or other tools.  Disallow these.
      Edward Thomson committed
    • 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
  4. 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
  5. 05 Aug, 2014 3 commits
  6. 06 Jul, 2014 4 commits
  7. 07 Jun, 2014 2 commits
  8. 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
  9. 20 May, 2014 1 commit
  10. 16 May, 2014 3 commits
  11. 01 May, 2014 1 commit
  12. 23 Apr, 2014 1 commit
  13. 22 Apr, 2014 1 commit
  14. 20 Apr, 2014 1 commit
  15. 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
  16. 05 Feb, 2014 1 commit
  17. 11 Dec, 2013 1 commit
    • Test cancel from indexer progress callback · 7697e541
      This adds tests that try canceling an indexer operation from
      within the progress callback.
      
      After writing the tests, I wanted to run this under valgrind and
      had a number of errors in that situation because mmap wasn't
      working.  I added a CMake option to force emulation of mmap and
      consolidated the Amiga-specific code into that new place (so we
      don't actually need separate Amiga code now, just have to turn on
      -DNO_MMAP).
      
      Additionally, I made the indexer code propagate error codes more
      reliably than it used to.
      Russell Belfer committed
  18. 09 Dec, 2013 1 commit
  19. 27 Nov, 2013 1 commit
  20. 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
  21. 17 Sep, 2013 5 commits
  22. 05 Sep, 2013 1 commit
  23. 28 Aug, 2013 1 commit
  24. 27 Aug, 2013 1 commit
  25. 26 Aug, 2013 2 commits
  26. 22 Aug, 2013 1 commit