Home | History | Annotate | Download | only in scripts
      1 #!/bin/sh
      2 #***************************************************************************
      3 #                                  _   _ ____  _
      4 #  Project                     ___| | | |  _ \| |
      5 #                             / __| | | | |_) | |
      6 #                            | (__| |_| |  _ <| |___
      7 #                             \___|\___/|_| \_\_____|
      8 #
      9 # Copyright (C) 2013-2016, Daniel Stenberg, <daniel (at] haxx.se>, et al.
     10 #
     11 # This software is licensed as described in the file COPYING, which
     12 # you should have received as part of this distribution. The terms
     13 # are also available at https://curl.haxx.se/docs/copyright.html.
     14 #
     15 # You may opt to use, copy, modify, merge, publish, distribute and/or sell
     16 # copies of the Software, and permit persons to whom the Software is
     17 # furnished to do so, under the terms of the COPYING file.
     18 #
     19 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
     20 # KIND, either express or implied.
     21 #
     22 ###########################################################################
     23 
     24 #
     25 # This script shows all mentioned contributors from the given <hash>/<tag>
     26 # until HEAD and adds the contributors already mentioned in the existing
     27 # RELEASE-NOTES.
     28 #
     29 
     30 start=$1
     31 
     32 if test -z "$start"; then
     33     echo "Usage: $0 <since this tag/hash> [--releasenotes]"
     34     exit
     35 fi
     36 
     37 # filter out Author:, Commit: and *by: lines
     38 # cut off the email parts
     39 # split list of names at comma
     40 # split list of names at " and "
     41 # cut off spaces first and last on the line
     42 # filter alternatives through THANKS-filter
     43 # only count names with a space (ie more than one word)
     44 # sort all unique names
     45 # awk them into RELEASE-NOTES format
     46 (
     47 git log $start..HEAD | \
     48 egrep -ai '(^Author|^Commit|by):' | \
     49 cut -d: -f2- | \
     50 cut '-d<' -f1 | \
     51 tr , '\012' | \
     52 sed 's/ and /\n/' | \
     53 sed -e 's/^ //' -e 's/ $//g' -e 's/@users.noreply.github.com$/ on github/'
     54 
     55 grep -a "^  [^ \(]" RELEASE-NOTES| \
     56 sed 's/, */\n/g'| \
     57 sed 's/^ *//'
     58 
     59 )| \
     60 sed -f ./docs/THANKS-filter | \
     61 grep -a ' ' | \
     62 sort -fu | \
     63 awk '{
     64  num++;
     65  n = sprintf("%s%s%s,", n, length(n)?" ":"", $0);
     66  #print n;
     67  if(length(n) > 77) {
     68    printf("  %s\n", p);
     69    n=sprintf("%s,", $0);
     70  }
     71  p=n;
     72 
     73 }
     74 
     75  END {
     76    printf("  %s\n", p);
     77    printf("  (%d contributors)\n", num);
     78  }
     79 
     80 '
     81