[[[
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.
]]]

### see https://www.apache.org/dev/pmc.html#newpmc for procedure

From: "Some Committer" <a.committer@wherever.example.com>
To: New Full Committer <new.committer@wherever.new.committers.live>
Cc: private{AT}subversion.apache.org
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.  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.

Becoming a full committer also means you'll become part of the Subversion
Project Management Committee (PMC).  The PMC is the managing body of the
Subversion development and user communities.  For more information, see
<http://www.apache.org/foundation/how-it-works.html#pmc> and
<http://www.apache.org/dev/pmc.html#faq>.

Please remember to subscribe to the private (PMC) mailing list by
emailing <private-subscribe{AT}subversion.apache.org>, and to checkout
a working copy of https://svn.apache.org/repos/private/pmc/subversion/.
Note: it typically takes 3 to 5 days after you accepted this invitation,
before access to this protected part of the repository is arranged.  If it
takes too long, please let us know on the private mailing list.

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
