diff --git a/utils/revert_checker.py b/utils/revert_checker.py index c61e4a3f977..deb49412b1e 100755 --- a/utils/revert_checker.py +++ b/utils/revert_checker.py @@ -170,7 +170,10 @@ def _find_common_parent_commit(git_dir: str, ref_a: str, ref_b: str) -> str: def find_reverts(git_dir: str, across_ref: str, root: str) -> List[Revert]: - """Finds reverts across `across_ref` in `git_dir`, starting from `root`.""" + """Finds reverts across `across_ref` in `git_dir`, starting from `root`. + + These reverts are returned in order of oldest reverts first. + """ across_sha = _rev_parse(git_dir, across_ref) root_sha = _rev_parse(git_dir, root) @@ -217,6 +220,10 @@ def find_reverts(git_dir: str, across_ref: str, root: str) -> List[Revert]: logging.error("%s claims to revert %s -- which isn't a commit -- %s", sha, object_type, reverted_sha) + # Since `all_reverts` contains reverts in log order (e.g., newer comes before + # older), we need to reverse this to keep with our guarantee of older = + # earlier in the result. + all_reverts.reverse() return all_reverts diff --git a/utils/revert_checker_test.py b/utils/revert_checker_test.py index a908e667598..6573c25c1a0 100755 --- a/utils/revert_checker_test.py +++ b/utils/revert_checker_test.py @@ -105,12 +105,12 @@ class Test(unittest.TestCase): across_ref='c47f971694be0159ffddfee8a75ae515eba91439', root='9f981e9adf9c8d29bb80306daf08d2770263ade6') self.assertEqual(reverts, [ - revert_checker.Revert( - sha='9f981e9adf9c8d29bb80306daf08d2770263ade6', - reverted_sha='4060016fce3e6a0b926ee9fc59e440a612d3a2ec'), revert_checker.Revert( sha='4e0fe038f438ae1679eae9e156e1f248595b2373', reverted_sha='65b21282c710afe9c275778820c6e3c1cf46734b'), + revert_checker.Revert( + sha='9f981e9adf9c8d29bb80306daf08d2770263ade6', + reverted_sha='4060016fce3e6a0b926ee9fc59e440a612d3a2ec'), ])