 ------
 Overview of SCMs
 ------
 Wim Deblauwe
 ------
 2005-12-01
 ------

~~ 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/doxia/references/apt-format.html

Overview of SCMs

  This is a list of all standard SCMs:

*-----*-------------*-----------------*
| <<SCM>> | <<Provider ID>> | <<Provider Module>> |
*-----*-------------*-----------------*
| {{{./git.html}Git}} | <<<git>>> | {{{./maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/index.html}Git Executable Provider}} |
*-----*-------------*-----------------*
| {{{./git.html}Git}} | <<<jgit>>> | {{{./maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/index.html}JGit Provider}} |
*-----*-------------*-----------------*
| {{{./subversion.html}Subversion}} | <<<svn>>> | {{{./maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/index.html}SVN Executable Provider}} |
*-----*-------------*-----------------*
| {{{./mercurial.html}Mercurial}} | <<<hg>>> | {{{./maven-scm-providers/maven-scm-provider-hg/index.html}Mercurial (Hg) Provider}} |
*-----*-------------*-----------------*
| {{{./local.html}Local}} | <<<local>>> | {{{./maven-scm-providers/maven-scm-provider-local/index.html}Local Provider}} |
*-----*-------------*-----------------*
