 ------
 Frequently Asked Questions
 ------
 John Casey
 Jesse McConnell
 ------
 22 June 2007
 ------

~~ 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.

~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/guides/mini/guide-apt-format.html

Frequently Asked Questions

  [[1]] {{{#1.} What would a patch plugin even be used for?}}

* Answers

  {1.} In certain environments direct source modification is not 
   allowed so to make alterations to the source you need some patch 
   application process.  This plugin seeks to address those situations.
   
  [[2]] {{{#2.} Why won't this work on windows?}}

* Answers

  {1.} This patch wraps the gnu patch tool, which must be in your path
    in order to function properly.  You might able to get this plugin working 
    within cygwin.
    
  {2.} If you would like to add windows support to this plugin, please do and 
    submit modifications through the normal project mechansims.
      
