 >                 replacement = '%s:' % keyword
 >             else:
 >                 replacement = keyword
+>             # commit replacement
+>             if (keyword in self.keywords) and (not replacement[:1].isupper()):
+>                 replacement = replacement[0].upper() + replacement[1:]
 >             # git commit email
 >             if re_search('[A|a]uthor', keyword) != None:
 >                 try:

>         message.addLine("debug: diff_cmd = git %s" % diff_cmd)
> 
>     # print whole message to file
>     print >>out, message.getMessage()
>     message.sendFile(out, fname)
398c774,775
<         log("Flagged revision %s for notification, but already reported this time" % rev)
---
>         log("Flagged revision %s for notification, \
>             but already reported this time" % rev)
417,418c794,797
<     show_cmd = "show -s --no-color --find-copies-harder --pretty=medium %s" % rev
<     diff_cmd = "diff-tree --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol %s %s" % (merge_diff, rev)
---

>     ("smtppassword", True, None, "sets password for SMTP AUTH"),
>     ("smtpssl", False, False, "enables SSL for SMTP"),
>     ("manual", True, None, "notify for a manually given set of revisions"),
34a66
>     ("colordiff", False, False, "colorize diffs using pygments library"),
38c70,71
<     ("link", True, None, "Link to insert into mail, %s will be replaced with revision"),
---
>     ("link", True, None,
>      "Link to insert into mail, %s will be replaced with revision"),
42c75,76
<     ("mergediffs", True, set(), "branches for which complete merge diffs are to be included"),
---
>     ("mergediffs", True, set(),
>      "branches for which complete merge diffs are to be included"),
45c79,83
< class State:
---
> 
