From: Xinglu Chen <public@yoctocell.xyz>
To: 50475@debbugs.gnu.org
Subject: [bug#50475] [PATCH] etc: committer: Amend previous commit if a copyright line was added.
Date: Wed, 08 Sep 2021 15:45:39 +0200 [thread overview]
Message-ID: <2e705537217d97d7fdc5070a3897dd68d68f0807.1631108277.git.public@yoctocell.xyz> (raw)
Previously, the script would raise an error if a copyright line was added to a
file in gnu/packages/. With this change, it will amend the previous commit
whenever a copyright line is added, and add the copyright line to the commit.
* etc/committer.scm.in (add-copyright-line): New procedure.
(main): Check if a copyright line was added and call ‘add-copyright-line’ if
necessary.
---
Before, you would get an error when a copyright line was added. This
might also make people think that the previous commits were not
successful, at least I did the first time this happened.
--8<---------------cut here---------------start------------->8---
$ ./etc/committer.scm
gnu: Add emacs-nasm-mode.
* gnu/packages/emacs-xyz.scm (emacs-nasm-mode): New variable.
[master bbe52033d7] gnu: Add emacs-nasm-mode.
1 file changed, 23 insertions(+)
Backtrace:
5 (primitive-load "/home/yoctocell/src/guix-local/./etc/committer.scm")
In srfi/srfi-1.scm:
634:9 4 (for-each #<procedure 7f3a50ebece0 at ice-9/eval.scm:333:13 (a)> ((#f #f #<<hunk> fi…>)))
In ice-9/eval.scm:
619:8 3 (_ #(#(#(#(#(#(#(#(#(#<directory (guile-user) 7f3a53a87c80> #) (…)) #) #) …) #) …) #) #))
619:8 2 (_ #(#(#(#<directory (guile-user) 7f3a53a87c80>) "gnu/packages/emacs-xyz.scm" #f #f …) …))
626:19 1 (_ #(#(#(#<directory (guile-user) 7f3a53a87c80>) "gnu/packages/emacs-xyz.scm" #f #f …) …))
In unknown file:
0 (cadr #f)
ERROR: In procedure cadr:
In procedure cadr: Wrong type (expecting pair): #f
--8<---------------cut here---------------end--------------->8---
With the patch, you get
--8<---------------cut here---------------start------------->8---
$ ./etc/committer.scm
gnu: Add emacs-nasm-mode.
* gnu/packages/emacs-xyz.scm (emacs-nasm-mode): New variable.
[master d662741368] gnu: Add emacs-nasm-mode.
1 file changed, 23 insertions(+)
Amend and add copyright line for Xinglu Chen <public@yoctocell.xyz>
[master 024095ccd6] gnu: Add emacs-nasm-mode.
Date: Wed Sep 8 15:39:12 2021 +0200
1 file changed, 24 insertions(+)
--8<---------------cut here---------------end--------------->8---
etc/committer.scm.in | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/etc/committer.scm.in b/etc/committer.scm.in
index e81ce16611..1ad83e37d7 100755
--- a/etc/committer.scm.in
+++ b/etc/committer.scm.in
@@ -5,6 +5,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -288,6 +289,15 @@ ChangeLog entry."
(break-string-with-newlines message/f 72)
(break-string-with-newlines changelog/f 72))))
+(define (add-copyright-line line)
+ "Add the copyright line on LINE to the previous commit."
+ (let ((author (match:substring
+ (string-match "^\\+;;; Copyright ©[^[:alpha:]]+(.*)$" line)
+ 1)))
+ (format
+ (current-output-port) "Amend and add copyright line for ~a~%" author)
+ (system* "git" "commit" "--amend" "--no-edit")))
+
(define (group-hunks-by-sexp hunks)
"Return a list of pairs associating all hunks with the S-expression they are
modifying."
@@ -370,15 +380,23 @@ modifying."
(error "Cannot apply")))
(usleep %delay))
hunks)
- (change-commit-message* (hunk-file-name (first hunks))
- old new)
- (let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-")))
+ (define copyright-line
+ (any (lambda (line) (and=> (string-prefix? "+;;; Copyright ©" line)
+ (const line)))
+ (hunk-diff-lines (first hunks))))
+ (cond
+ (copyright-line
+ (add-copyright-line copyright-line))
+ (else
+ (let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-")))
+ (change-commit-message* (hunk-file-name (first hunks))
+ old new)
(change-commit-message* (hunk-file-name (first hunks))
old new
port)
(usleep %delay)
(unless (eqv? 0 (status:exit-val (close-pipe port)))
- (error "Cannot commit")))))
+ (error "Cannot commit")))))))
;; XXX: we recompute the hunks here because previous
;; insertions lead to offsets.
(new+old+hunks (diff-info)))))))
base-commit: 5c5e9d4e50af20042947b6b55e462a25b9d8cfc7
--
2.33.0
next reply other threads:[~2021-09-08 13:46 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-08 13:45 Xinglu Chen [this message]
2021-09-21 12:48 ` bug#50475: [PATCH] etc: committer: Amend previous commit if a copyright line was added Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2e705537217d97d7fdc5070a3897dd68d68f0807.1631108277.git.public@yoctocell.xyz \
--to=public@yoctocell.xyz \
--cc=50475@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).