10 ignore_file
=${1#*=} ;;
22 describe
=$
(git describe
"master")
23 base
=$
(expr "$describe" : '\(.*\)-\([0-9]*\)-g[0-9a-f]*$') ||
26 git rev-parse
--verify "$base^0" >/dev
/null
2>/dev
/null ||
{
27 echo >&2 "Eh? where is your base?"
32 topics
= leftover
= dothis
=
37 if test -f "$ignore_file"
39 while read ignore rest
42 if ignore
=$
(git rev-parse
-q --verify $ignore)
45 elif ignore
=$
(expr "$rest" : '.* \([0-9a-f]\{40\}\)$')
51 ignores
="$ignores$ignore "
56 leftover
="$leftover$1$LF"
60 dothis
="$1$LF$LF$dothis"
64 topic
="$2" tip
="$3" date="$4" merged
="$1"
65 case " $topics" in *" $topic "*) return ;; esac
66 topics
="$topics$topic "
68 maint_count
=$
(git rev-list
"maint..$tip" |
wc -l)
69 if test "$maint_count" = 0
71 echo "**** already merged $topic ****"
72 return ;# already merged
77 master_count
=$
(git rev-list
"$base..$tip" |
wc -l)
78 if test $maint_count -le $master_count
85 if current
=$
(git rev-parse
--verify -q "$topic^0") &&
86 test "$current" = "$tip"
90 elif test -z "$current"
96 case "$mergeable,$ready" in
98 comment
="# $topic: not mergeable ($master_count vs $maint_count)"
99 comment
="$comment$LF# $merged"
103 topic_count
=$
(git rev-list
"$base..$current" |
wc -l)
105 comment
="# $topic: not ready ($master_count vs $topic_count)"
106 comment
="$comment$LF# $merged"
111 if test $maint_count = $master_count
113 insn
="$insn # $master_count ($date) $merged"
115 insn
="$insn # $maint_count/$master_count ($date) $merged"
117 insn
="$insn$LF$(git log --oneline "maint..
$tip" | sed -e "s
/^
/# /")"
123 git log
--first-parent --min-parents=2 --max-parents=2 \
124 --format='%ci %H %P %s' "$base..master" |
{
125 while read date time zone commit parent tip subject
127 case " $ignores" in *" $commit "*) continue ;; esac
128 topic
=$
(expr "$subject" : "Merge branch '\(.*\)'$") ||
{
129 defer
"# ignoring $commit ($subject)"
132 one_topic
"$commit" "$topic" "$tip" "$date"