summaryrefslogtreecommitdiff
path: root/util/maint/list_changes.py
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2018-01-17 18:06:05 +0000
committerAndreas Sandberg <andreas.sandberg@arm.com>2018-01-18 17:26:55 +0000
commitd76798c3e5611a9673bd1da9589a0081610cef5b (patch)
tree46a283688f797684a1fe4344549266a7bec59a22 /util/maint/list_changes.py
parentbe5f4836188e49003be4b78b158f201820b570dc (diff)
downloadgem5-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/maint/list_changes.py')
-rwxr-xr-xutil/maint/list_changes.py20
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 ])