1. 16 Jun, 2015 5 commits
    • Introduce p_utimes and p_futimes · 121c3171
      Provide functionality to set the time on a filesystem entry,
      using utimes or futimes on POSIX type systems or SetFileTime
      on Win32.
      Edward Thomson committed
    • tests: tick the index when we count OID calculations · e44abe16
      These tests want to test that we don't recalculate entries which match
      the index already. This is however something we force when truncating
      racily-clean entries.
      
      Tick the index forward as we know that we don't perform the
      modifications which the racily-clean code is trying to avoid.
      Carlos Martín Nieto committed
    • crlf: tick the index forward to work around racy-git behaviour · c4e6ab5f
      In order to avoid racy-git, we zero out the file size for entries with
      the same timestamp as the index (or during the initial checkout). This
      is the case in a couple of crlf tests, as the code is fast enough to do
      everything in the same second.
      
      As we know that we do not perform the modification just after writing
      out the index, which is what this is designed to work around, tick the
      mtime of the index file such that it doesn't agree with the files
      anymore, and we do not zero out these entries.
      Carlos Martín Nieto committed
    • index: zero the size of racily-clean entries · 316b820b
      If a file entry has the same timestamp as the index itself, it is
      considered racily-clean, as it may have been modified after the index
      was written, but during the same second. We take extra steps to check
      the contents, but this is just one part of avoiding races.
      
      For files which do have changes but have not been updated in the index,
      updating the on-disk index means updating its timestamp, which means we
      would no longer recognise these entries as racy and we would trust the
      timestamp to tell us whether they have changed.
      
      In order to work around this, git zeroes out the file-size field in
      entries with the same timestamp as the index in order to force the next
      diff to check the contents. Do so in libgit2 as well.
      Carlos Martín Nieto committed
    • diff: add failing test for racy-git in the index · 77596fcf
      We update the index and then immediately change the contents of the
      file. This makes the diff think there are no changes, as the timestamp
      of the file agrees with the cached data. This is however a bug, as the
      file has obviously changed contents.
      
      The test is a bit fragile, as it assumes that the index writing and the
      following modification of the file happen in the same second, but it's
      enough to show the issue.
      Carlos Martín Nieto committed
  2. 15 Jun, 2015 7 commits
  3. 12 Jun, 2015 15 commits
  4. 11 Jun, 2015 3 commits
  5. 10 Jun, 2015 10 commits