1. 29 Jun, 2018 3 commits
    • settings: optional unsaved index safety · bfa1f022
      Add the `GIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY` option, which will cause
      commands that reload the on-disk index to fail if the current
      `git_index` has changed that have not been saved.  This will prevent
      users from - for example - adding a file to the index then calling a
      function like `git_checkout` and having that file be silently removed
      from the index since it was re-read from disk.
      
      Now calls that would re-read the index will fail if the index is
      "dirty", meaning changes have been made to it but have not been written.
      Users can either `git_index_read` to discard those changes explicitly,
      or `git_index_write` to write them.
      Edward Thomson committed
    • index: return a unique error code on dirty index · 787768c2
      When the index is dirty, return GIT_EINDEXDIRTY so that consumers can
      identify the exact problem programatically.
      Edward Thomson committed
    • index: test dirty index bit · dc4a18c7
      Test that any changes to the index will mark the index as dirty.  Also
      ensure that when we initialize a new index, read the index contents
      from disk, or write the index contents to disk that we reset the dirty
      flag to zero.  Further ensure that an unforced read with dirty contents
      (when the on-disk index has not changed) does _not_ reset the dirty
      flag as we have not updated the contents of our index and our unsaved
      contents remain intact.
      Edward Thomson committed
  2. 10 Jun, 2018 1 commit
  3. 23 Jun, 2017 1 commit
    • tests: index::tests: create sandboxed repo for locking · 6ee7d37a
      The test `index::tests::can_lock_index` operates on the "testrepo.git"
      repository located inside of our source tree. While this is okay for
      tests which do read-only operations on these resouces, this specific
      test tries to lock the index by creating a lock. This will obviously
      fail on out-of-tree builds with read-only source trees.
      
      Fix the issue by creating a sandbox first.
      Patrick Steinhardt committed
  4. 17 Sep, 2015 1 commit
    • git_futils_mkdir_*: make a relative-to-base mkdir · ac2fba0e
      Untangle git_futils_mkdir from git_futils_mkdir_ext - the latter
      assumes that we own everything beneath the base, as if it were
      being called with a base of the repository or working directory,
      and is tailored towards checkout and ensuring that there is no
      bogosity beneath the base that must be cleaned up.
      
      This is (at best) slow and (at worst) unsafe in the larger context
      of a filesystem where we do not own things and cannot do things like
      unlink symlinks that are in our way.
      Edward Thomson committed
  5. 04 Sep, 2015 1 commit
  6. 14 Aug, 2015 1 commit
  7. 19 Jun, 2015 1 commit
  8. 25 Feb, 2015 1 commit
  9. 14 Feb, 2015 1 commit
  10. 18 Dec, 2014 3 commits
  11. 17 Dec, 2014 1 commit
  12. 16 Dec, 2014 1 commit
  13. 05 Dec, 2014 1 commit
  14. 01 Jul, 2014 1 commit
  15. 17 Apr, 2014 1 commit
  16. 04 Feb, 2014 2 commits
    • Fix typo setting sorted flag when reloading index · 43709ca8
      This fixes a typo I made for setting the sorted flag on the index
      after a reload.  That typo didn't actually cause any test failures
      so I'm also adding a test that explicitly checks that the index is
      correctly sorted after a reload when ignoring case and when not.
      Russell Belfer committed
    • Convert pqueue to just be a git_vector · 882c7742
      This updates the git_pqueue to simply be a set of specialized
      init/insert/pop functions on a git_vector.
      
      To preserve the pqueue feature of having a fixed size heap, I
      converted the "sorted" field in git_vectors to a more general
      "flags" field so that pqueue could mix in it's own flag.  This
      had a bunch of ramifications because a number of places were
      directly looking at the vector "sorted" field - I added a couple
      new git_vector helpers (is_sorted, set_sorted) so the specific
      representation of this information could be abstracted.
      Russell Belfer committed
  17. 25 Jan, 2014 1 commit
  18. 19 Nov, 2013 2 commits
  19. 14 Nov, 2013 1 commit
  20. 05 Nov, 2013 1 commit
  21. 01 Nov, 2013 2 commits
    • Convert git_index_read to have a "force" flag · 8e5a8ef8
      This is a little more intuitive than the turned-around option that
      I originally wrote.
      Russell Belfer committed
    • Make diff and status perform soft index reload · 4bf630b6
      This changes `git_index_read` to have two modes - a hard index
      reload that always resets the index to match the on-disk data
      (which was the old behavior) and a soft index reload that uses
      the timestamp / file size information and only replaces the index
      data if the file on disk has been modified.
      
      This then updates the git_status code to do a soft reload unless
      the new GIT_STATUS_OPT_NO_REFRESH flag is passed in.
      
      This also changes the behavior of the git_diff functions that use
      the index so that when an index is not explicitly passed in (i.e.
      when the functions call git_repository_index for you), they will
      also do a soft reload for you.
      
      This intentionally breaks the file signature of git_index_read
      because there has been some confusion about the behavior previously
      and it seems like all existing uses of the API should probably be
      examined to select the desired behavior.
      Russell Belfer committed
  22. 04 Oct, 2013 2 commits
  23. 19 Aug, 2013 1 commit
  24. 17 Jun, 2013 2 commits
  25. 15 May, 2013 2 commits
  26. 25 Mar, 2013 2 commits
  27. 27 Jan, 2013 1 commit
  28. 12 Jan, 2013 1 commit
  29. 04 Jan, 2013 1 commit