[[git-component]]
= Git Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-git/src/main/docs/git-component.adoc
:docTitle: Git
:artifactId: camel-git
:description: Perform operations on git repositories.
:since: 2.16
:supportLevel: Stable
:component-header: Both producer and consumer are supported

*Since Camel {since}*

*{component-header}*

The Git component allows you to work with a generic Git repository. 

[source,xml]
------------------------------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-git</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------

*URI Format*

[source,java]
-----------------------------------
git://localRepositoryPath[?options]
-----------------------------------

== URI Options

The producer allows to do operations on a specific repository. +
The consumer allows consuming commits, tags and branches on a specific
repository.


// component options: START
The Git component supports 3 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
|===
// component options: END




// endpoint options: START
The Git endpoint is configured using URI syntax:

----
git:localPath
----

with the following path and query parameters:

=== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *localPath* | *Required* Local repository path |  | String
|===


=== Query Parameters (15 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *branchName* (common) | The branch name to work on |  | String
| *password* (common) | Remote repository password |  | String
| *remoteName* (common) | The remote repository name to use in particular operation like pull |  | String
| *remotePath* (common) | The remote repository path |  | String
| *tagName* (common) | The tag name to work on |  | String
| *username* (common) | Remote repository username |  | String
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *type* (consumer) | The consumer type. The value can be one of: commit, tag, branch |  | GitType
| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. The value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
| *allowEmpty* (producer) | The flag to manage empty git commits | true | boolean
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *operation* (producer) | The operation to do on the repository. The value can be one of: clone, init, add, remove, commit, commitAll, createBranch, deleteBranch, createTag, deleteTag, status, log, push, pull, showBranches, cherryPick, remoteAdd, remoteList |  | String
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
|===
// endpoint options: END





== Message Headers

[width="100%",cols="10%,10%,10%,20%,50%",options="header",]
|=======================================================================
|Name |Default Value |Type |Context |Description

|CamelGitOperation |`null` |String |Producer |The operation to do on a repository, if not specified as endpoint option

|CamelGitFilename |`null` |String |Producer |The file name in an add operation

|CamelGitCommitMessage |`null` |String |Producer |The commit message related in a commit operation

|CamelGitCommitUsername |`null` |String |Producer |The commit username in a commit operation

|CamelGitCommitEmail |`null` |String |Producer |The commit email in a commit operation

|CamelGitCommitId |`null` |String |Producer |The commit id

|CamelGitAllowEmpty |`null` |Boolean |Producer |The flag to manage empty git commits

|=======================================================================

== Producer Example

Below is an example route of a producer that add a file test.java to a
local repository, commit it with a specific message on master branch and
then push it to remote repository.

[source,java]
--------------------------------------------------------------------------------------------------------------------
from("direct:start")
        .setHeader(GitConstants.GIT_FILE_NAME, constant("test.java"))
        .to("git:///tmp/testRepo?operation=add")
        .setHeader(GitConstants.GIT_COMMIT_MESSAGE, constant("first commit"))
        .to("git:///tmp/testRepo?operation=commit")
        .to("git:///tmp/testRepo?operation=push&remotePath=https://foo.com/test/test.git&username=xxx&password=xxx")
        .to("git:///tmp/testRepo?operation=createTag&tagName=myTag")
        .to("git:///tmp/testRepo?operation=pushTag&tagName=myTag&remoteName=origin")
--------------------------------------------------------------------------------------------------------------------

== Consumer Example

Below is an example route of a consumer that consumes commit:

[source,java]
---------------------------------------
from("git:///tmp/testRepo?type=commit")
                        .to(....)
---------------------------------------

include::camel-spring-boot::page$git-starter.adoc[]
