diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/git.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/git.json
index fc475b1d1f747..27ad24eca006f 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/git.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/git.json
@@ -55,7 +55,7 @@
"exchangePattern": { "index": 6, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
"pollStrategy": { "index": 7, "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel." },
"allowEmpty": { "index": 8, "kind": "parameter", "displayName": "Allow Empty", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": true, "description": "The flag to manage empty git commits" },
- "depth": { "index": 9, "kind": "parameter", "displayName": "Depth", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "Clone depth for shallow clones. A value of 1 fetches only the latest commit. When set to 0 or not specified, a full clone is performed." },
+ "depth": { "index": 9, "kind": "parameter", "displayName": "Depth", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "Clone depth for shallow clones. Must be a positive integer. A value of 1 fetches only the latest commit. When set to 0 or not specified, a full clone is performed." },
"operation": { "index": 10, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "add", "cherryPick", "clean", "clone", "commit", "commitAll", "createBranch", "createTag", "deleteBranch", "deleteTag", "gc", "init", "log", "pull", "push", "remoteAdd", "remoteList", "remove", "showBranches", "showTags", "status" ], "deprecated": false, "autowired": false, "secret": false, "description": "The operation to do on the repository" },
"remoteName": { "index": 11, "kind": "parameter", "displayName": "Remote Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The remote repository name to use in particular operation like pull" },
"remotePath": { "index": 12, "kind": "parameter", "displayName": "Remote Path", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The remote repository path" },
diff --git a/components/camel-git/src/generated/resources/META-INF/org/apache/camel/component/git/git.json b/components/camel-git/src/generated/resources/META-INF/org/apache/camel/component/git/git.json
index fc475b1d1f747..27ad24eca006f 100644
--- a/components/camel-git/src/generated/resources/META-INF/org/apache/camel/component/git/git.json
+++ b/components/camel-git/src/generated/resources/META-INF/org/apache/camel/component/git/git.json
@@ -55,7 +55,7 @@
"exchangePattern": { "index": 6, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
"pollStrategy": { "index": 7, "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel." },
"allowEmpty": { "index": 8, "kind": "parameter", "displayName": "Allow Empty", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": true, "description": "The flag to manage empty git commits" },
- "depth": { "index": 9, "kind": "parameter", "displayName": "Depth", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "Clone depth for shallow clones. A value of 1 fetches only the latest commit. When set to 0 or not specified, a full clone is performed." },
+ "depth": { "index": 9, "kind": "parameter", "displayName": "Depth", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "Clone depth for shallow clones. Must be a positive integer. A value of 1 fetches only the latest commit. When set to 0 or not specified, a full clone is performed." },
"operation": { "index": 10, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "add", "cherryPick", "clean", "clone", "commit", "commitAll", "createBranch", "createTag", "deleteBranch", "deleteTag", "gc", "init", "log", "pull", "push", "remoteAdd", "remoteList", "remove", "showBranches", "showTags", "status" ], "deprecated": false, "autowired": false, "secret": false, "description": "The operation to do on the repository" },
"remoteName": { "index": 11, "kind": "parameter", "displayName": "Remote Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The remote repository name to use in particular operation like pull" },
"remotePath": { "index": 12, "kind": "parameter", "displayName": "Remote Path", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The remote repository path" },
diff --git a/components/camel-git/src/main/docs/git-component.adoc b/components/camel-git/src/main/docs/git-component.adoc
index b5818d89d9c83..8899d86438605 100644
--- a/components/camel-git/src/main/docs/git-component.adoc
+++ b/components/camel-git/src/main/docs/git-component.adoc
@@ -85,7 +85,7 @@ from("direct:clone")
.to("git:///tmp/myRepo?operation=clone&remotePath=https://github.com/example/repo.git&depth=1");
---------------------------------------
-A `depth` of 1 fetches only the latest commit. When set to 0 or omitted, a full clone is performed.
+A `depth` of 1 fetches only the latest commit. The value must be a positive integer. When set to 0 or omitted, a full clone is performed.
=== Custom config file
diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java b/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java
index 2c8a4aa2b7341..c899c87a4c1df 100644
--- a/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java
+++ b/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java
@@ -74,7 +74,8 @@ public class GitEndpoint extends ScheduledPollEndpoint {
private boolean allowEmpty = true;
@UriParam(label = "producer",
- description = "Clone depth for shallow clones. A value of 1 fetches only the latest commit. "
+ description = "Clone depth for shallow clones. Must be a positive integer. "
+ + "A value of 1 fetches only the latest commit. "
+ "When set to 0 or not specified, a full clone is performed.")
private int depth;
@@ -96,6 +97,10 @@ public Producer createProducer() throws Exception {
@Override
public Consumer createConsumer(Processor processor) throws Exception {
+ if (type == null) {
+ throw new IllegalArgumentException("type must be specified for git consumer");
+ }
+
return switch (type) {
case COMMIT -> new GitCommitConsumer(this, processor);
case TAG -> new GitTagConsumer(this, processor);
diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java
index fc87b50f408de..0856005c094cf 100644
--- a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java
+++ b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java
@@ -219,6 +219,9 @@ protected void doClone(String operation) throws GitAPIException {
new UsernamePasswordCredentialsProvider(
endpoint.getUsername(), endpoint.getPassword()));
}
+ if (endpoint.getDepth() < 0) {
+ throw new IllegalArgumentException("depth must be a positive integer for shallow clone");
+ }
if (endpoint.getDepth() > 0) {
cloneCommand.setDepth(endpoint.getDepth());
}
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GitEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GitEndpointBuilderFactory.java
index 02f2ce2c83067..a448a53b66bde 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GitEndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GitEndpointBuilderFactory.java
@@ -811,8 +811,9 @@ default GitEndpointProducerBuilder allowEmpty(String allowEmpty) {
return this;
}
/**
- * Clone depth for shallow clones. A value of 1 fetches only the latest
- * commit. When set to 0 or not specified, a full clone is performed.
+ * Clone depth for shallow clones. Must be a positive integer. A value
+ * of 1 fetches only the latest commit. When set to 0 or not specified,
+ * a full clone is performed.
*
* The option is a: int type.
*
@@ -826,8 +827,9 @@ default GitEndpointProducerBuilder depth(int depth) {
return this;
}
/**
- * Clone depth for shallow clones. A value of 1 fetches only the latest
- * commit. When set to 0 or not specified, a full clone is performed.
+ * Clone depth for shallow clones. Must be a positive integer. A value
+ * of 1 fetches only the latest commit. When set to 0 or not specified,
+ * a full clone is performed.
*
* The option will be converted to a int type.
*