1. 09 Feb, 2018 1 commit
  2. 23 Dec, 2017 1 commit
    • Fix unpack double free · c3514b0b
      If an element has been cached, but then the call to
      packfile_unpack_compressed() fails, the very next thing that happens is
      that its data is freed and then the element is not removed from the
      cache, which frees the data again.
      
      This change sets obj->data to NULL to avoid the double-free. It also
      stops trying to resolve deltas after two continuous failed rounds of
      resolution, and adds a test for this.
      lhchavez committed
  3. 08 Dec, 2017 1 commit
  4. 06 Dec, 2017 1 commit
  5. 03 Jul, 2017 1 commit
    • Make sure to always include "common.h" first · 0c7f49dd
      Next to including several files, our "common.h" header also declares
      various macros which are then used throughout the project. As such, we
      have to make sure to always include this file first in all
      implementation files. Otherwise, we might encounter problems or even
      silent behavioural differences due to macros or defines not being
      defined as they should be. So in fact, our header and implementation
      files should make sure to always include "common.h" first.
      
      This commit does so by establishing a common include pattern. Header
      files inside of "src" will now always include "common.h" as its first
      other file, separated by a newline from all the other includes to make
      it stand out as special. There are two cases for the implementation
      files. If they do have a matching header file, they will always include
      this one first, leading to "common.h" being transitively included as
      first file. If they do not have a matching header file, they instead
      include "common.h" as first file themselves.
      
      This fixes the outlined problems and will become our standard practice
      for header and source files inside of the "src/" from now on.
      Patrick Steinhardt committed
  6. 08 Jun, 2017 1 commit
    • settings: rename `GIT_OPT_ENABLE_SYNCHRONOUS_OBJECT_CREATION` · 6c23704d
      Initially, the setting has been solely used to enable the use of
      `fsync()` when creating objects. Since then, the use has been extended
      to also cover references and index files. As the option is not yet part
      of any release, we can still correct this by renaming the option to
      something more sensible, indicating not only correlation to objects.
      
      This commit renames the option to `GIT_OPT_ENABLE_FSYNC_GITDIR`. We also
      move the variable from the object to repository source code.
      Patrick Steinhardt committed
  7. 19 May, 2017 1 commit
    • indexer: name pack files after trailer hash · c0e54155
      Upstream git.git has changed the way how packfiles are named.
      Previously, they were using a hash of the contained object's OIDs, which
      has then been changed to use the hash of the complete packfile instead.
      See 1190a1acf (pack-objects: name pack files after trailer hash,
      2013-12-05) in the git.git repository for more information on this
      change.
      
      This commit changes our logic to match the behavior of core git.
      Chris Hescock committed
  8. 02 Mar, 2017 1 commit
  9. 28 Feb, 2017 3 commits
  10. 17 Feb, 2017 6 commits
  11. 21 Jan, 2017 3 commits
  12. 14 Jan, 2017 1 commit
  13. 04 Jan, 2017 1 commit
  14. 01 Jan, 2017 1 commit
  15. 29 Dec, 2016 2 commits
  16. 16 Mar, 2016 1 commit
  17. 13 Jan, 2016 1 commit
  18. 04 Jan, 2016 1 commit
  19. 31 Jul, 2015 1 commit
  20. 09 Jun, 2015 1 commit
  21. 02 Jun, 2015 1 commit
    • indexer: use lseek to extend the packfile · aa57231f
      We've been using `p_ftruncate()` to extend the packfile in order to mmap
      it and write the new data into it. This works well in the general case,
      but as truncation does not allocate space in the filesystem, it must do
      so when we write data to it.
      
      The only way the OS has to indicate a failure to allocate space is via
      SIGBUS which means we tried to write outside the file. This will cause
      everyone to crash as they don't expect to handle this signal.
      
      Switch to using `p_lseek()` and `p_write()` to extend the file in a way
      which tells the filesystem to allocate the space for the missing
      data. We can then be sure that we have space to write into.
      Carlos Martín Nieto committed
  22. 22 May, 2015 1 commit
  23. 13 Mar, 2015 3 commits
  24. 11 Mar, 2015 1 commit
  25. 09 Dec, 2014 1 commit
  26. 21 Nov, 2014 1 commit
  27. 19 Nov, 2014 1 commit
  28. 09 Jul, 2014 1 commit