[[[
You'll probably need customize this heavily for the particular person
you're offering partial commit access to.  Also, remember to replace
instances of "{AT}" with real "@" signs.  It's just masked in this
template to fool the spam address harvesters.
]]]

From: "Some Committer" <a.committer@wherever.example.com>
To: New Partial Committer <new.committer@wherever.new.committers.live>
Cc: private{AT}subversion.apache.org
Subject: Commit access for Subversion FROBLINGS area

Hi New Partial Committer,

The other committers and I would like to offer you partial commit
access for maintenance of the Subversion FROBLINGS area.

If you already have partial commit access to another area, you can
accept this offer by simply replying to this mail.  We'll update the
COMMITTERS file (or you can do it yourself, that's fine too).

If you do not already have partial commit access, you can accept this
offer by replying to this mail and following the instructions at
<http://www.apache.org/dev/new-committers-guide.html#cla>.  You will
receive an email with details on how to access your account.  Once you
have access to your account, you are encouraged to modify the COMMITTERS
file appropriately, which also serves as a test of your new username and
password.

Remember that you can still post patches for review before committing,
when you want to.  Commit access just means that you can rely on your
own judgment to decide when something is ready for commit.  Also, if
you haven't done so already, please read

   http://subversion.apache.org/docs/community-guide/

Thanks for all your work so far!

- Some Full Committer
