diff options
author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2022-12-27 09:57:56 -0500 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2022-12-28 15:21:11 -0500 |
commit | a6b98cdc07dff83413a3f32687e4671517991721 (patch) | |
tree | 807f4eb05c55aba0289df80913adf8599fd421f0 | |
parent | 4f5ea195ffd2cb97b80a706c231d998304cecafc (diff) | |
download | guix-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.in | 34 |
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))) |