Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUGFIX] commit-graph: fix bug around octopus merges #167

Merged

Commits on Aug 5, 2019

  1. commit-graph: fix bug around octopus merges

    In 1771be9 "commit-graph: merge commit-graph chains" (2019-06-18),
    the method sort_and_scan_merged_commits() was added to merge the
    commit lists of two commit-graph files in the incremental format.
    Unfortunately, there was an off-by-one error in that method around
    incrementing num_extra_edges, which leads to an incorrect offset
    for the base graph chunk.
    
    When we store an octopus merge in the commit-graph file, we store
    the first parent in the normal place, but use the second parent
    position to point into the "extra edges" chunk where the remaining
    parents exist. This means we should be adding "num_parents - 1"
    edges to this list, not "num_parents - 2". That is the basic error.
    
    The reason this was not caught in the test suite is more subtle.
    In 5324-split-commit-graph.sh, we test creating an octopus merge
    and adding it to the tip of a commit-graph chain, then verify the
    result. This _should_ have caught the problem, except that when
    we load the commit-graph files we were overly careful to not fail
    when the commit-graph chain does not match. This care was on
    purpose to avoid race conditions as one process reads the chain
    and another process modifies it. In such a case, the reading
    process outputs the following message to stderr:
    
    	warning: commit-graph chain does not match
    
    These warnings are output in the test suite, but ignored. By
    checking the stderr of `git commit-graph verify` to include
    the expected progress output, it will now catch this error.
    
    Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
    derrickstolee committed Aug 5, 2019
    Configuration menu
    Copy the full SHA
    6e913ac View commit details
    Browse the repository at this point in the history