[[[
You'll probably need customize this for the particular person you're
offering full 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 Full Committer <new.committer@wherever.new.committers.live>
Cc: svn-full-committers{AT}red-bean.com
Subject: Full commit access to Subversion

Hi New Full Committer,

The other committers and I would like to offer you full commit access
to Subversion.  

If you already have partial commit access, you can accept this offer
by simply replying to this mail, forwarding a copy of it to
svnadmin{AT}svn.collab.net.  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 forwarding a copy of this mail to svnadmin{AT}svn.collab.net,
and including in that message your tigris.org username.  A temporary
password will be chosen for you and revealed via email -- you can
change the password yourself later <https://svn.collab.net/wpct/>.)
Once you are notified that your account has been activated, 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.tigris.org/hacking.html

Thanks for all your work so far!

- Some Full Committer
