1. 28 Oct, 2015 10 commits
  2. 27 Oct, 2015 3 commits
  3. 26 Oct, 2015 2 commits
  4. 23 Oct, 2015 5 commits
  5. 22 Oct, 2015 5 commits
  6. 21 Oct, 2015 9 commits
  7. 15 Oct, 2015 3 commits
  8. 14 Oct, 2015 3 commits
    • odb: Prioritize alternate backends · a0a1b19a
      For most real use cases, repositories with alternates use them as main
      object storage. Checking the alternate for objects before the main
      repository should result in measurable speedups.
      
      Because of this, we're changing the sorting algorithm to prioritize
      alternates *in cases where two backends have the same priority*. This
      means that the pack backend for the alternate will be checked before the
      pack backend for the main repository *but* both of them will be checked
      before any loose backends.
      Vicent Marti committed
    • odb: Be smarter when refreshing backends · 43820f20
      In the current implementation of ODB backends, each backend is tasked
      with refreshing itself after a failed lookup. This is standard Git
      behavior: we want to e.g. reload the packfiles on disk in case they have
      changed and that's the reason we can't find the object we're looking
      for.
      
      This behavior, however, becomes pathological in repositories where
      multiple alternates have been loaded. Given that each alternate counts
      as a separate backend, a miss in the main repository (which can
      potentially be very frequent in cases where object storage comes from
      the alternate) will result in refreshing all its packfiles before we
      move on to the alternate backend where the object will most likely be
      found.
      
      To fix this, the code in `odb.c` has been refactored as to perform the
      refresh of all the backends externally, once we've verified that the
      object is nowhere to be found.
      
      If the refresh is successful, we then perform the lookup sequentially
      through all the backends, skipping the ones that we know for sure
      weren't refreshed (because they have no refresh API).
      
      The on-disk pack backend has been adjusted accordingly: it no longer
      performs refreshes internally.
      Vicent Marti committed
    • Merge pull request #3453 from libgit2/cmn/warn-python · ac7e50dd
      CMake: be more explicit with python errors
      Edward Thomson committed