diff options
author | Andreas Sandberg <andreas.sandberg@arm.com> | 2018-01-17 18:06:05 +0000 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2018-01-18 17:26:55 +0000 |
commit | d76798c3e5611a9673bd1da9589a0081610cef5b (patch) | |
tree | 46a283688f797684a1fe4344549266a7bec59a22 /util | |
parent | be5f4836188e49003be4b78b158f201820b570dc (diff) | |
download | gem5-d76798c3e5611a9673bd1da9589a0081610cef5b.tar.xz |
util: Add an option to specify paths in list_changes.py
Add an option to restrict change lists to changes that touch one or
more subdirectories in the source tree.
Change-Id: Id4e34fe300fdc3657505e2e188c727e583bcf611
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Sudhanshu Jha <sudhanshu.jha@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7461
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Diffstat (limited to 'util')
-rwxr-xr-x | util/maint/list_changes.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/util/maint/list_changes.py b/util/maint/list_changes.py index 78e44426b..3d9be8d6b 100755 --- a/util/maint/list_changes.py +++ b/util/maint/list_changes.py @@ -1,6 +1,6 @@ #!/usr/bin/env python2 # -# Copyright (c) 2017 ARM Limited +# Copyright (c) 2017-2018 Arm Limited # All rights reserved # # The license below extends only to copyright in the software and shall @@ -105,7 +105,7 @@ class Commit(object): def __str__(self): return "%s: %s" % (self.rev[0:8], self.log[0]) -def list_revs(branch, baseline=None): +def list_revs(branch, baseline=None, paths=[]): """Get a generator that lists git revisions that exist in 'branch'. If the optional parameter 'baseline' is specified, the generator excludes commits that exist on that branch. @@ -119,7 +119,9 @@ def list_revs(branch, baseline=None): else: query = str(branch) - changes = subprocess.check_output([ "git", "rev-list", query ]) + changes = subprocess.check_output( + [ "git", "rev-list", query, '--'] + paths + ) if changes == "": return @@ -128,9 +130,9 @@ def list_revs(branch, baseline=None): assert rev != "" yield Commit(rev) -def list_changes(upstream, feature): - feature_revs = tuple(list_revs(upstream, feature)) - upstream_revs = tuple(list_revs(feature, upstream)) +def list_changes(upstream, feature, paths=[]): + feature_revs = tuple(list_revs(upstream, feature, paths=paths)) + upstream_revs = tuple(list_revs(feature, upstream, paths=paths)) feature_cids = dict([ (c.change_id, c) for c in feature_revs if c.change_id is not None ]) @@ -173,11 +175,13 @@ def _main(): parser.add_argument("--deep-search", action="store_true", help="Use a deep search to find incorrectly " \ "rebased changes") + parser.add_argument("paths", metavar="PATH", type=str, nargs="*", + help="Paths to list changes for") args = parser.parse_args() incoming, outgoing, common, upstream_unknown, feature_unknown = \ - list_changes(args.upstream, args.feature) + list_changes(args.upstream, args.feature, paths=args.paths) if incoming: print "Incoming changes:" @@ -210,7 +214,7 @@ def _main(): if args.deep_search: print "Incorrectly rebased changes:" - all_upstream_revs = list_revs(args.upstream) + all_upstream_revs = list_revs(args.upstream, paths=args.paths) all_upstream_cids = dict([ (c.change_id, c) for c in all_upstream_revs \ if c.change_id is not None ]) |