• 
      

    Fix up issues with default author/message in patcher with squash.

    Review Request #14320 — Created Feb. 3, 2025 and submitted

    Information

    RBTools
    master

    Reviewers

    When using the patcher with multiple commits, the messages and author
    were getting inappropriately overwritten.

    The intent here was to set a default author and message, probably
    computed from the review request, as a fallback if any individual patch
    did not have its own author or message. Unfortunately, if we decided we
    had any patches to process, we'd unconditionally overwrite the metadata
    for them instead of only doing it for those which were missing
    information.

    This was also setting "[x/n] message" for all the patches even when we
    were running in squash mode, which meant that if we were applying
    multiple patches but squashing to a single commit, the resulting commit
    would have the message "[n/n] message" instead of just "message". I've
    changed it so if we're expecting to squash (and we have multiple
    commits), we always use the default author/message and throw away the
    individual commit messages.

    This wasn't found when running rbt patch in real life for two reasons:
    1. When we do a squash, we are currently only fetch the cumulative diff
    and apply it as a single patch.
    2. We currently don't have any cases where commits on the server side
    will be lacking author/message information.

    This also fixes up an issue in the patch command where we were using
    enumerate when we didn't have to.

    Ran unit tests, and fixed up the tests which were now broken.

    Summary ID
    Fix up issues with default author/message in patcher with squash.
    When using the patcher with multiple commits, the messages and author were getting inappropriately overwritten. The intent here was to set a default author and message, probably computed from the review request, as a fallback if any individual patch did not have its own author or message. Unfortunately, if we decided we had any patches to process, we'd unconditionally overwrite the metadata for them instead of only doing it for those which were missing information. This was also setting "[x/n] message" for all the patches even when we were running in squash mode, which meant that if we were applying multiple patches but squashing to a single commit, the resulting commit would have the message "[n/n] message" instead of just "message". I've changed it so if we're expecting to squash (and we have multiple commits), we always use the default author/message and throw away the individual commit messages. This wasn't found when running `rbt patch` in real life for two reasons: 1. When we do a squash, we are currently only fetch the cumulative diff and apply it as a single patch. 2. We currently don't have any cases where commits on the server side will be lacking author/message information. This also fixes up an issue in the patch command where we were using `enumerate` when we didn't have to. Testing Done: Ran unit tests, and fixed up the tests which were now broken.
    10b97c0c4464f77a6557a2f4997442ba105e82bc
    chipx86
    1. Ship It!
    2. 
        
    david
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to master (9b1bdc0)