<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<properties>
<!-- Project identity -->
  <property name="projectInfo.project.fullname" value="MyProject"/>
  <property name="projectInfo.project.url" value="http://myproj.mygroup.org/"/>
<!-- A comma separated list defining the way actions are sorted in the changes file.
       none = no sorting, will be listed in chronological order
       type = group by the type attribute -->
  <property name="projectInfo.changes.sort" value="type"/>
<!-- Indicate if the committers list should be included. Values are true
       or false. -->
  <property name="projectInfo.changes.includeCommitterList" value="true"/>
<!-- Indicate if the contributors list should be included. Values are true
       or false. -->
  <property name="projectInfo.changes.includeContributorList" value="true"/>
  <property name="projectInfo.svn.ext" value=".svn.xml"/>
  <property name="projectInfo.svn.path-prefix" value="src/documentation/content/svn-log/myProject-"/>
<!-- Indicate the rss flow language. Values are locale like : en-us, fr-fr, ... -->
  <property name="projectInfo.rss.language" value="en-us"/>
</properties>
