emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-26 a0b7b30: Do not reject https://gnu.org in commit


From: Paul Eggert
Subject: [Emacs-diffs] emacs-26 a0b7b30: Do not reject https://gnu.org in commit messages
Date: Mon, 16 Oct 2017 18:55:01 -0400 (EDT)

branch: emacs-26
commit a0b7b301dd32ea02b00a3ffb477c8a6074071f74
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Do not reject https://gnu.org in commit messages
    
    * build-aux/git-hooks/commit-msg: Do not reject commit messages
    containing http: or ftp: URLs to gnu.org or fsf.org.  Instead,
    rewrite the messages to use https: URLs.
---
 build-aux/git-hooks/commit-msg | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/build-aux/git-hooks/commit-msg b/build-aux/git-hooks/commit-msg
index e21aaf0..e1ff281 100755
--- a/build-aux/git-hooks/commit-msg
+++ b/build-aux/git-hooks/commit-msg
@@ -44,7 +44,7 @@ if test "$at_sign" != @; then
 fi
 
 # Check the log entry.
-exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" '
+exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" -v file="$1" '
   BEGIN {
     # These regular expressions assume traditional Unix unibyte behavior.
     # They are needed for old or broken versions of awk, e.g.,
@@ -70,6 +70,8 @@ exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" '
     unsafe_gnu_url = "(http|ftp)://([" c_lower ".]*\\.)?(gnu|fsf)\\.org"
   }
 
+  { input[NR] = $0 }
+
   /^#/ {
     # Ignore every line after a scissors line.
     if (/^# *---* *(>[8%]|[8%]<) *---* *$/) { exit }
@@ -127,12 +129,8 @@ exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" '
     status = 1
   }
 
-  {
-    if (match($0, unsafe_gnu_url)) {
-      url = substr($0, RSTART, RLENGTH)
-      printf "Use https: URL instead of '\''%s'\'' in commit message\n", url
-      status = 1
-    }
+  $0 ~ unsafe_gnu_url {
+    needs_rewriting = 1
   }
 
   $0 ~ non_print {
@@ -145,6 +143,21 @@ exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" '
       print "Empty commit message"
       status = 1
     }
+    if (status == 0 && needs_rewriting) {
+      for (i = 1; i <= NR; i++) {
+       line = input[i]
+       while (match(line, unsafe_gnu_url)) {
+         prefix = substr(line, 1, RSTART - 1)
+         suffix = substr(line, RSTART)
+         line = prefix "https:" substr(suffix, 5 + (suffix ~ /^http:/))
+       }
+       print line >file
+      }
+      if (close(file) != 0) {
+       print "Cannot rewrite: " file
+       status = 1
+      }
+    }
     if (status != 0) {
       print "Commit aborted; please see the file 'CONTRIBUTE'"
     }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]