• Show log

    Commit

  • Hash : ad7a51d8
    Author : Colin Stolley
    Date : 2021-10-07T13:26:52

    refs: Speed up packed lookups.
    
    Currently ref lookups require loading the entire packed-refs file into
    a hashmap in memory. For repos with large numbers of refs this can be
    painfully slow.
    
    This patch replaces the existing lookup code and instead mmap()'s the
    packed-refs file and performs a binary search to locate the ref entry.
    Git uses a similiar approach.
    
    The old hash table codepath is still used for unsorted packed-refs files.
    
    This patch also fixes a minor bug where the "peeled" trait is never
    parsed correctly from the packed-refs header.
    

  • README.md

  • Writing Clar tests for libgit2

    For information on the Clar testing framework and a detailed introduction please visit:

    https://github.com/vmg/clar

    • Write your modules and tests. Use good, meaningful names.

    • Make sure you actually build the tests by setting:

        cmake -DBUILD_TESTS=ON build/
    • Test:

        ./build/libgit2_tests
    • Make sure everything is fine.

    • Send your pull request. That’s it.

    Memory leak checks

    These are automatically run as part of CI, but if you want to check locally:

    Linux

    Uses valgrind:

    $ cmake -DBUILD_TESTS=ON -DVALGRIND=ON ..
    $ cmake --build .
    $ valgrind --leak-check=full --show-reachable=yes --num-callers=50 --suppressions=../libgit2_tests.supp \
      ./libgit2_tests

    macOS

    Uses leaks, which requires XCode installed:

    $ MallocStackLogging=1 MallocScribble=1 MallocLogFile=/dev/null CLAR_AT_EXIT="leaks -quiet \$PPID" \
      ./libgit2_tests