]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/ofed/management/gen_chlog.sh
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / ofed / management / gen_chlog.sh
1 #!/bin/sh
2
3 usage()
4 {
5         echo "Usage: $0 [--spec] <target>"
6         exit 2
7 }
8
9 test -z "$1" && usage
10
11 if [ "$1" = "--spec" ] ; then
12         spec_format=1
13         shift
14         test -z "$1" && usage
15 fi
16
17 TARGET=$1
18
19 GIT_DIR=`git rev-parse --git-dir 2>/dev/null`
20
21 test -z "$GIT_DIR" && usage
22
23
24 export GIT_DIR
25 export GIT_PAGER=""
26 export PAGER=""
27
28
29 mkchlog()
30 {
31         target=$1
32         format=$2
33
34         prev_tag=""
35
36         for tag in `git tag -l ${target}-'*'` ; do
37                 obj=`git cat-file tag $tag | awk '/^object /{print $2}'`
38                 base=`git merge-base $obj HEAD`
39                 if [ -z "$base" -o "$base" != $obj ] ; then
40                         continue
41                 fi
42                 all_vers="$prev_tag$tag $all_vers"
43                 prev_tag=$tag..
44         done
45
46         if [ -z "$prev_tag" ] ; then
47                 all_vers=HEAD
48         else
49                 all_vers="${prev_tag}HEAD $all_vers"
50         fi
51
52         for ver in $all_vers ; do
53                 log_out=`git log $ver -- $target`
54                 if [ -z "$log_out" ] ; then
55                         continue
56                 fi
57                 ver_name=`echo $ver | sed -e 's/^.*\.\.//'`
58                 echo ""
59                 echo "** Version: $ver_name"
60                 echo ""
61                 git log --no-merges "${format}" $ver -- $target
62                 prev_t=$tag..
63         done
64 }
65
66
67 if [ -z "$spec_format" ] ; then
68         mkchlog $TARGET --pretty=format:"%ad %an%n%H%n%n* %s%n" \
69                 | sed -e 's/^\* /\t* /'
70 else
71         echo "%changelog"
72         mkchlog $TARGET --pretty=format:"- %ad %an: %s"
73         echo ""
74 fi