<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:mule="http://www.mulesoft.org/schema/mule/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://www.mulesoft.org/schema/mule/git">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"></xs:import>
  <xs:import schemaLocation="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" namespace="http://www.springframework.org/schema/beans"></xs:import>
  <xs:import schemaLocation="http://www.mulesoft.org/schema/mule/core/current/mule.xsd" namespace="http://www.mulesoft.org/schema/mule/core"></xs:import>
  <xs:import schemaLocation="http://www.mulesoft.org/schema/mule/devkit/current/mule-devkit.xsd" namespace="http://www.mulesoft.org/schema/mule/devkit"></xs:import>
  <xs:simpleType name="integerType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:integer"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="decimalType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:decimal"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="floatType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:float"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="doubleType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:double"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="dateTimeType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:dateTime"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="longType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:long"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="byteType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:byte"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="booleanType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:boolean"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="anyUriType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:anyURI"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="charType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:minLength value="1"></xs:minLength>
          <xs:maxLength value="1"></xs:maxLength>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:complexType name="XmlType">
    <xs:sequence>
      <xs:any maxOccurs="unbounded" minOccurs="0" processContents="lax"></xs:any>
    </xs:sequence>
    <xs:attribute name="ref" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation>The reference object for this parameter</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:element xmlns:devkit="http://www.mulesoft.org/schema/mule/devkit" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="config" substitutionGroup="mule:abstract-extension" devkit:javaClass="org.mule.module.git.config.GitConnectorLifecycleAdapter">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mule:abstractExtensionType">
          <xs:annotation>
            <xs:documentation>is a Cloud Connector Facade for &lt;a href="http://git-scm.com/"&gt;GIT&lt;/a&gt; SCM.

It allows to

&lt;ul&gt;
&lt;li&gt;clone repositories&lt;/li&gt;
&lt;li&gt;create and delete branches&lt;/li&gt;
&lt;li&gt;push, pull and fetch repositories&lt;/li&gt;
&lt;li&gt;checkout branches, tags and revisions&lt;/li&gt;
&lt;li&gt;commit revisions&lt;/li&gt;

&lt;/ul&gt;</xs:documentation>
          </xs:annotation>
          <xs:attribute name="name" use="optional" type="xs:string">
            <xs:annotation>
              <xs:documentation>Give a name to this configuration so it can be later referenced by config-ref.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="directory" use="required" type="xs:string">
            <xs:annotation>
              <xs:documentation>Directory of your git repository</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/git" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="clone" substitutionGroup="mule:abstract-message-processor" type="CloneType">
    <xs:annotation>
      <xs:documentation>Clone a repository into a new directory</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CloneType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="uri" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The (possibly remote) repository to clone from.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/git" name="bare" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>True if you want a bare Git repository, false otherwise.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="remote" default="origin" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the remote to keep track of the upstream repository.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="branch" default="HEAD" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the local branch into which the remote will be cloned.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="overrideDirectory" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the directory to use for git repository</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/git" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="add" substitutionGroup="mule:abstract-message-processor" type="AddType">
    <xs:annotation>
      <xs:documentation>Add file contents to the index</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AddType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="filePattern" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>File to add content from. Also a leading directory name (e.g. dir to add dir/file1 and dir/file2) can be given to add all files in the directory, recursively.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="overrideDirectory" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the directory to use for git repository</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/git" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="create-branch" substitutionGroup="mule:abstract-message-processor" type="CreateBranchType">
    <xs:annotation>
      <xs:documentation>Create a local branch</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CreateBranchType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="name" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the new branch</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/git" name="force" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>If true and the branch with the given name already exists, the start-point of an existing branch will be set to a new start-point; if false, the existing branch will not be changed.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="startPoint" default="HEAD" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The new branch head will point to this commit. It may be given as a branch name, a commit-id, or a tag. If this option is omitted, the current HEAD will be used instead.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="overrideDirectory" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the directory to use for git repository</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/git" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="delete-branch" substitutionGroup="mule:abstract-message-processor" type="DeleteBranchType">
    <xs:annotation>
      <xs:documentation>Delete local branch</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DeleteBranchType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="name" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the branch to delete</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/git" name="force" use="required" type="booleanType">
          <xs:annotation>
            <xs:documentation>If false a check will be performed whether the branch to be deleted is already merged into the current branch and deletion will be refused in this case</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="overrideDirectory" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the directory to use for git repository</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/git" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="commit" substitutionGroup="mule:abstract-message-processor" type="CommitType">
    <xs:annotation>
      <xs:documentation>Record changes to the repository</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CommitType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="msg" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Commit message</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="committerName" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the person performing this commit</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="committerEmail" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Email of the person performing this commit</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="authorName" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the author of the changes to commit</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="authorEmail" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Email of the author of the changes to commit</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="overrideDirectory" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the directory to use for git repository</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/git" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="push" substitutionGroup="mule:abstract-message-processor" type="PushType">
    <xs:annotation>
      <xs:documentation>Update remote refs along with associated objects</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PushType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="remote" default="origin" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The remote (uri or name) used for the push operation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/git" name="force" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>Sets the force preference for push operation</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="overrideDirectory" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the directory to use for git repository</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/git" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="pull" substitutionGroup="mule:abstract-message-processor" type="PullType">
    <xs:annotation>
      <xs:documentation>Fetch from and merge with another repository or a local branch</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PullType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="overrideDirectory" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the directory to use for git repository</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/git" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="fetch" substitutionGroup="mule:abstract-message-processor" type="FetchType">
    <xs:annotation>
      <xs:documentation>Fetch changes from another repository</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="FetchType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="overrideDirectory" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the directory to use for git repository</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/git" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="checkout" substitutionGroup="mule:abstract-message-processor" type="CheckoutType">
    <xs:annotation>
      <xs:documentation>Checkout a local branch or create a local branch from a remote branch

or</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CheckoutType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="branch" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the branch to checkout</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="startPoint" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>If specified creates a new branch pointing to this startPoint</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="overrideDirectory" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Name of the directory to use for git repository</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:schema>