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

Apache Tomcat re-uses code from a number of other Apache projects. There are
several reasons why depending on the binary releases of those projects is not
ideal. These include:
- potential conflicts if a web application ships with the same JAR
- a large JAR where Tomcat only depends on a small fraction


SVN
===

For sources hosted in svn the approache is to svn copy the classes to the Tomcat
source tree, modify them (always with a package rename, sometimes with
additional changes) and then keep them in sync with the original via regular svn
merges. This file keeps track of these copies to assist committers in keeping
them up to date.

BCEL
org.apache.tomcat.util.bcel is copied from:
/commons/proper/bcel/trunk/src/main/java/org/apache/bcel

DBCP
org.apache.tomcat.dbcp.dbcp2 is copied from:
/commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2
and
/commons/proper/dbcp/trunk/src/main/resources/org/apache/commons/dbcp2
org.apache.tomcat.dbcp.pool2 is copied from:
/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2

FileUpload
This used to be hosted in svn. All changes up to the point where FileUpload was
migrated to git have been merged.

Codec
org.apache.tomcat.util.codec is copied from:
/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/
Note: Only classes required for Base64 encoding/decoding. The rest are removed.


GIT
===

Updates from Git are applied manually via patch files. Patch files are generated
using:
git diff <last SHA1>:<sub-tree> HEAD:<sub-tree> > temp.patch
The more recently merged SHA1 for the component below should be updated after
the patch file has been applied and committed

FileUpload
Sub-tree:
src/main/java/org/apache/commons/fileupload
The SHA1 ID for the most recent commit to be merged to Tomcat is:
86b11bbc1437a12fa64bc1484c4edc0bdd5a0966

Note: Tomcat's copy of fileupload also includes classes copied manually (rather
      than svn copied) from Commons IO.
