Table of Contents

Version Control

The Apache Tomcat project is in the process of migrating from Subversion to Git for version control. The following components have been migrated:

  • Apache Tomcat 9.0.x
  • Apache Tomcat 8.5.x
  • Apache Tomcat 7.0.x

The following components currently use Subversion as the primary version control system:

  • Tomcat Connectors *
  • Tomcat Maven plugin *
  • Tomcat Native *
  • Tomcat web site
  • Taglibs
  • archive

The Subversion repositories marked with a * are also mirrored to a Git repository.


The ASF operates a dual master system for repositories that use Git as their primary version control system. This means committers may commit to either or GitHub.

For repositories that are mirrored to Git from Subversion, the mirrors may be found at or GitHub and are read-only for everyone.


This the Git repository that contains the Apache Tomcat source code. There are currently three branches:

  • master
  • 8.5.x
  • 7.0.x

master is the primary development branch. Apache Tomcat 9.0.x releases are tagged from this branch. Development work generally occurs in this branch first.

8.5.x is the stable release branch for Apache Tomcat 8.5.x. Generally, fixes are cherry picked from master into this branch.

7.0.x is the stable release branch for Apache Tomcat 7.0.x. Generally, fixes are cherry picked from 8.5.x into this branch.

A web based view of this repository is available via GitBox or GitHub.

Subversion Repository

The root of the repository is

Note: there is also ViewVC-powered web view of the repository.

The directories below this level are:

/archive/ Modules that are no longer maintained
/jk/ The native source code for the Tomcat Connectors. This includes mod_jk, isapi and nsapi. The current code is in /jk/trunk/.
/maven-plugin/ The Apache Tomcat Maven Plugin source code and website.
/native/ The native source code for the Tomcat Native/APR Connector. The current code is in /native/branches/1.1.x/ (1.1.x) and /native/trunk/ (1.2.x).
/sandbox/ An area where Tomcat committers can experiment with new ideas.
/site/ The Apache Tomcat website.
/taglibs/ The Apache Taglibs source code and website.
/tags/ Tags for the primary development branch. Mainly used for modules.

Line endings

The repositories are configured so that when you check out from svn, you get the line ending appropriate for your platform for all files. The thinking behind this is that, for example, if you need to fix a typo in a .bat file from MacOS, it is easier if the .bat file has MacOS line-endings.

When you build locally, line-endings are not changed. The expectation is that the source has the correct line-endings for your platform so all the files that matter on your platform will have the correct line endings. When you are on Windows it doesn't matter if the .sh files have Windows line-endings since you'll never use them on Windows.