These are notes for Forrest committers to publish our project
site documentation. Other users can learn from our methods.

See also:
http://forrest.apache.org/howto-forrestbot-svn.html
http://forrest.apache.org/procedures/How_to_publish_docs.html

----------------------------------------
To publish from trunk/site-author/

Do once:
If your "svn username" is different from your local system username
create $FORREST_HOME/deploy.svn.settings file like:
<?xml version="1.0"?>
<project>
  <property name="deploy.svn.user" value="myApacheUsername"/>
</project>


# Make changes to sources, and then test, then commit.
# Use the forrestbot to build and then deploy to svn.apache.org ...

]$ cd site-author
]$ forrest -f publish.xml build
# ... verify files in build/forrest-docs
]$ forrest -f publish.xml deploy -Ddeploy.svn.commit-message="my commit message"

Now the files are in SVN at forrest/site
Periodically on the server, the website files are automatically updated
from that repository.
You do not need to do anything else.

For more information, see:
http://forrest.apache.org/procedures/How_to_publish_docs.html
http://forrest.apache.org/howto-forrestbot-svn.html

Note: The first time that you deploy, it will need to do
a long svn checkout first.
