aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-12-27 09:57:56 -0500
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-12-28 15:21:11 -0500
commita6b98cdc07dff83413a3f32687e4671517991721 (patch)
tree807f4eb05c55aba0289df80913adf8599fd421f0
parent4f5ea195ffd2cb97b80a706c231d998304cecafc (diff)
downloadguix-a6b98cdc07dff83413a3f32687e4671517991721.tar.gz
guix-a6b98cdc07dff83413a3f32687e4671517991721.zip
teams: Allow a patch-file argument to cc-members.
* etc/teams.scm.in (git-patch->revisions): New procedure. (main) [cc-members]: New match pattern to support patch file argument. [get-maintainer]: Simplify using the newly introduced procedure from above. (main): Update usage doc. Series-changes: 2 - New: support passing a patch file to the cc-members command
-rw-r--r--etc/teams.scm.in34
1 files changed, 24 insertions, 10 deletions
diff --git a/etc/teams.scm.in b/etc/teams.scm.in
index e50efea786..96a04aca3d 100644
--- a/etc/teams.scm.in
+++ b/etc/teams.scm.in
@@ -634,20 +634,29 @@ and REV-END, two git revision strings."
(error "invalid patch file:" file))
(match:substring m 1)))))
+(define (git-patch->revisions file)
+ "Return the start and end revisions of FILE, a patch file produced with git."
+ (let* ((rev-end (git-patch->commit-id file))
+ (rev-start (string-append rev-end "^")))
+ (list rev-start rev-end)))
+
(define (main . args)
(match args
(("cc" . team-names)
(apply cc (map find-team team-names)))
+ (("cc-members" patch-file)
+ (unless (file-exists? patch-file)
+ (error "patch file does not exist:" patch-file))
+ (apply main "cc-members" (git-patch->revisions patch-file)))
(("cc-members" rev-start rev-end)
(apply cc (find-team-by-scope
(diff-revisions rev-start rev-end))))
(("get-maintainer" patch-file)
- (let* ((rev-end (git-patch->commit-id patch-file))
- (rev-start (string-append rev-end "^")))
- (apply main "list-members"
- (map (compose symbol->string team-id)
- (find-team-by-scope (diff-revisions rev-start rev-end))))))
+ (apply main "list-members"
+ (map (compose symbol->string team-id)
+ (find-team-by-scope (apply diff-revisions
+ (git-patch->revisions patch-file))))))
(("list-teams" . args)
(list-teams))
(("list-members" . team-names)
@@ -660,10 +669,15 @@ and REV-END, two git revision strings."
"Usage: etc/teams.scm <command> [<args>]
Commands:
- cc <team-name> get git send-email flags for cc-ing <team-name>
- cc-members <start> <end> cc teams related to files changed between revisions
- list-teams list teams and their members
- list-members <team-name> list members belonging to <team-name>
- get-maintainer <patch> compatibility mode with Linux get_maintainer.pl~%"))))
+ cc <team-name>
+ get git send-email flags for cc-ing <team-name>
+ cc-members <start> <end> | patch
+ cc teams related to files changed between revisions or in a patch file
+ list-teams
+ list teams and their members
+ list-members <team-name>
+ list members belonging to <team-name>
+ get-maintainer <patch>
+ compatibility mode with Linux get_maintainer.pl~%"))))
(apply main (cdr (command-line)))