• Edward Lemur's avatar
    Reland "gclient_scm: Use cherry-picking instead of rebasing." · f9afc77f
    Edward Lemur authored
    The failures were caused by:
     1 - When one change (call it #2) has been uploaded on top of another (#1),
         and (#1) has already landed, git cherry-pick complains that the range
         '<merge-base>..<change #2>' contains empty commits, since the contents
         of (#1) are already present in the tree.
     2 - We did not abort the cherry-picking when 'git cherry-pick' failed,
         so a failure made all further CLs in that bot fail.
    
    This CL fixes it and prevents further regressions.
    
    Original change's description:
    > gclient_scm: Use cherry-picking instead of rebasing.
    >
    > Currently gclient might include extra commits when applying patches.
    > For example, in this case we checkout |patch| and rebase it on top of |base|,
    > thus including an |extra commit| that we shouldn't.
    >
    > o master
    > |
    > . o patch
    > |/
    > o extra commit
    > |
    > o base (what gclient synced src at)
    >
    > This change uses the merge-base between |patch| and |master| to cherry-pick only
    > the changes belonging to the patch.
    >
    > Bug: 850812
    > Change-Id: I138192f96bc62b1bb19b0e1ad952c8f8c67631c4
    > Reviewed-on: https://chromium-review.googlesource.com/1137052
    > Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
    > Reviewed-by: Aaron Gable <agable@chromium.org>
    
    Bug: 850812
    Change-Id: I83f38d0a258df3f5cd89e277f0d648badff29a22
    Reviewed-on: https://chromium-review.googlesource.com/1139554Reviewed-by: 's avatarAaron Gable <agable@chromium.org>
    Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
    f9afc77f
gclient_scm.py 57.8 KB