[deps] ensure individual review of specific deps

Change-Id: I44f5bf01d43a1c4ee9b9b56ef15f9d0ec8cbabef
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/327701
Reviewed-by: Sigurd Meldgaard <sigurdm@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
This commit is contained in:
Devon Carew 2023-09-27 17:26:35 +00:00 committed by Commit Queue
parent ef1c3098a1
commit eae02502d4
2 changed files with 37 additions and 5 deletions

2
DEPS
View file

@ -179,7 +179,7 @@ vars = {
"stream_channel_rev": "0ce7ab69c3a2ab83cdeb9dc60e1bacbb83abc165",
"string_scanner_rev": "da9142cf9809e7e1364144b8193ec60d87f0a4b8",
"sync_http_rev": "8233f74cd8a87707c13beceb59b56bca41b52966",
"tar_rev": "3c68cba8e51c569428222b9185469249206172c6", # external package, review all rolls. disable rev_sdk_deps.dart,
"tar_rev": "3c68cba8e51c569428222b9185469249206172c6",
"term_glyph_rev": "1b28285a7e818b8e87c4d2119d968c5b36d73c7a",
"test_rev": "8191a355cefe5e6073e597d139bfb46e4b00c493",
"test_descriptor_rev": "030193dfdfbf85930eae8536909c546151da9e9c",

View file

@ -9,9 +9,18 @@
import 'dart:convert';
import 'dart:io';
import 'package:cli_util/cli_logging.dart';
import 'package:path/path.dart' as path;
import 'package:pool/pool.dart' as pool;
/// The following set of packages should be individually reviewed.
///
/// Generally, they are from repos that are not Dart team owned, and we want to
/// ensure that we consistently review all changes from those repos.
const Set<String> individuallyReviewedPackages = {
'tar',
};
void main(List<String> args) async {
// Validate we're running from the repo root.
if (!File('README.dart-sdk').existsSync() || !File('DEPS').existsSync()) {
@ -36,7 +45,7 @@ void main(List<String> args) async {
final gitPool = pool.Pool(10);
final depsToRev = Map.fromEntries(
final revDepsToCommits = Map.fromEntries(
(await Future.wait(
deps.map((dep) {
return gitPool.withResource(() async {
@ -53,14 +62,24 @@ void main(List<String> args) async {
}),
);
if (depsToRev.isEmpty) {
if (revDepsToCommits.isEmpty) {
print('No new revisions.');
return;
}
final depsToRevNames = depsToRev.keys.map((e) => e.name).join(', ');
final separateReviewDeps = revDepsToCommits.keys
.where((dep) => individuallyReviewedPackages.contains(dep.name))
.toList();
revDepsToCommits
.removeWhere((dep, _) => individuallyReviewedPackages.contains(dep.name));
final depsToRevNames = revDepsToCommits.keys.map((e) => e.name).join(', ');
print('Move moving forward revisions for: $depsToRevNames.');
if (separateReviewDeps.isNotEmpty) {
print('(additional, individually reviewed updates are also available for: '
'${separateReviewDeps.map((dep) => dep.name).join(', ')})');
}
print('');
print('Commit message:');
print('');
@ -69,7 +88,7 @@ void main(List<String> args) async {
print('Revisions updated by `dart tools/rev_sdk_deps.dart`.');
print('');
for (var entry in depsToRev.entries) {
for (var entry in revDepsToCommits.entries) {
final dep = entry.key;
final commit = entry.value;
@ -89,6 +108,19 @@ void main(List<String> args) async {
print('');
}
if (separateReviewDeps.isNotEmpty) {
final boldText = Ansi(true)
.emphasized('Note: updates are also available for additional packages');
print('$boldText; these require individual review.\nPlease ensure that the '
'review for these changes is thorough. To roll them:');
print('');
for (var dep in separateReviewDeps) {
print('${dep.name} from ${dep.url}:');
print(' dart tools/manage_deps.dart bump third_party/pkg/${dep.name}');
print('');
}
}
}
// By convention, pinned deps are deps with an eol comment.