• Show log

    Commit

  • Hash : d4a0b124
    Author : Vicent Marti
    Date : 2011-10-30T21:58:33

    refs: Partial rewrite for read-only refs
    
    This new version of the references code is significantly faster and
    hopefully easier to read.
    
    External API stays the same. A new method `git_reference_reload()` has
    been added to force updating a memory reference from disk. In-memory
    references are no longer updated automagically -- this was killing us.
    
    If a reference is deleted externally and the user doesn't reload the
    memory object, nothing critical happens: any functions using that
    reference should fail gracefully (e.g. deletion, renaming, and so on).
    
    All generated references from the API are read only and must be free'd
    by the user. There is no reference counting and no traces of generated
    references are kept in the library.
    
    There is no longer an internal representation for references. There is
    only one reference struct `git_reference`, and symbolic/oid targets are
    stored inside an union.
    
    Packfile references are stored using an optimized struct with flex array
    for reference names. This should significantly reduce the memory cost of
    loading the packfile from disk.