• 
      

    Fix storing DiffX data when commits aren't used

    Review Request #11769 — Created Aug. 3, 2021 and submitted

    Information

    Review Board
    release-4.0.x

    Reviewers

    DiffXParser stores parsed information on a DiffX file in DiffSet,
    DiffCommit, and FileDiff, and then uses that information to
    regenerate the DiffX file.

    The problem is, if a diff is uploaded without commit history (due to API
    usage or SCM limitation), there is no DiffCommit, so we were losing
    out on all the change-related data and all associated files. This isn't
    just an issue for DiffX, but any parser storing data in
    ParsedDiffChange.extra_data.

    FileDiff creation now checks for this situation and stores any
    ParsedDiffChange.extra_data content in a special key in DiffSet
    (change_extra_data for a main diff, parent_change_extra_data for a
    parent diff). DiffXParser will look for this and use it if commits
    aren't available.

    Unit tests pass on Python 2 and 3.

    Verified that this fixed issues in production with non-commit-backed
    diffs.

    Summary ID
    Fix storing DiffX data when commits aren't used, and fix default revisions.
    `DiffXParser` stores parsed information on a DiffX file in `DiffSet`, `DiffCommit`, and `FileDiff`, and then uses that information to regenerate the DiffX file. The problem is, if a diff is uploaded without commit history (due to API usage or SCM limitation), there is no `DiffCommit`, so we were losing out on all the change-related data and all associated files. This isn't just an issue for DiffX, but any parser storing data in `ParsedDiffChange.extra_data`. `FileDiff` creation now checks for this situation and stores any `ParsedDiffChange.extra_data` content in a special key in `DiffSet` (`change_extra_data` for a main diff, `parent_change_extra_data` for a parent diff). `DiffXParser` will look for this and use it if commits aren't available.
    a926a9ecaf7a3c3cec7a7ab386c5460d49d44603
    Description From Last Updated

    F841 local variable 'diffset_extra_data' is assigned to but never used

    reviewbotreviewbot

    E501 line too long (80 > 79 characters)

    reviewbotreviewbot
    Checks run (1 failed, 1 succeeded)
    flake8 failed.
    JSHint passed.

    flake8

    chipx86
    chipx86
    david
    1. Ship It!
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-4.0.x (3c90032)