Chromium Code Reviews| Index: recipe_engine/autoroll_impl/candidate_algorithm.py |
| diff --git a/recipe_engine/autoroll_impl/candidate_algorithm.py b/recipe_engine/autoroll_impl/candidate_algorithm.py |
| index a6aead4bf056486b503c92b1d9f64baded3008b5..81577e6e7f95694fe2f93138885ee1c06a466741 100644 |
| --- a/recipe_engine/autoroll_impl/candidate_algorithm.py |
| +++ b/recipe_engine/autoroll_impl/candidate_algorithm.py |
| @@ -31,8 +31,13 @@ def get_commitlists(deps): |
| def find_best_rev(repos): |
| """Returns the project_id of the best repo to roll. |
| - "Best" is determined by "moves the least amount of commits, globally". There |
| - are two ways that rolling a repo can move commits: |
| + "Best" is determined by "is an interesting commit and moves the least amount |
| + of commits, globally". |
| + |
| + 'Interesting' means 'the commit modifies one or more recipe related files', |
|
dnj
2017/04/20 18:16:21
nit: use double quotes for consistency
iannucci
2017/04/20 21:53:20
Done.
|
| + and is defined by CommitMetadata.roll_candidate. |
| + |
| + There are two ways that rolling a repo can move commits: |
| 1) As dependencies. Rolling repo A that depends on (B, C) will take |
| a penalty for each commit that B and C need to move in order to be |
| @@ -77,13 +82,12 @@ def find_best_rev(repos): |
| for project_id, clist in repos.iteritems(): |
| assert isinstance(clist, CommitList) |
| - candidate = clist.next |
| + candidate, movement_score = clist.next_roll_candidate |
| if not candidate: |
| continue |
| unaccounted_repos = set(repo_set) |
| - movement_score = 0 |
| # first, determine if rolling this repo will force other repos to move. |
| for d_pid, dep in candidate.spec.deps.iteritems(): |
| unaccounted_repos.discard(d_pid) |
| @@ -204,4 +208,5 @@ def get_roll_candidates(context, package_spec): |
| print('found %d/%d good/bad candidates in %0.2f seconds' % ( |
| len(ret_good), len(ret_bad), time.time()-start)) |
| + sys.stdout.flush() |
| return ret_good, ret_bad, repos |