• D
    commit: add generation number to struct commit · 83073cc9
    Derrick Stolee 提交于
    The generation number of a commit is defined recursively as follows:
    
    * If a commit A has no parents, then the generation number of A is one.
    * If a commit A has parents, then the generation number of A is one
      more than the maximum generation number among the parents of A.
    
    Add a uint32_t generation field to struct commit so we can pass this
    information to revision walks. We use three special values to signal
    the generation number is invalid:
    
    GENERATION_NUMBER_INFINITY 0xFFFFFFFF
    GENERATION_NUMBER_MAX 0x3FFFFFFF
    GENERATION_NUMBER_ZERO 0
    
    The first (_INFINITY) means the generation number has not been loaded or
    computed. The second (_MAX) means the generation number is too large to
    store in the commit-graph file. The third (_ZERO) means the generation
    number was loaded from a commit graph file that was written by a version
    of git that did not support generation numbers.
    Signed-off-by: NDerrick Stolee <dstolee@microsoft.com>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    83073cc9
alloc.c 2.7 KB