You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2018/03/23 09:50:17 UTC
[camel] branch master updated: CAMEL-12400 - Camel-Git: Add Merge
operation
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new fc44f03 CAMEL-12400 - Camel-Git: Add Merge operation
fc44f03 is described below
commit fc44f03672816ef30044b442519ade79aa7b8b30
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Mar 23 10:47:59 2018 +0100
CAMEL-12400 - Camel-Git: Add Merge operation
---
.../camel/component/git/producer/GitOperation.java | 1 +
.../camel/component/git/producer/GitProducer.java | 23 ++++++++++++++++
.../component/git/producer/GitProducerTest.java | 32 ++++++++++++++++++++++
3 files changed, 56 insertions(+)
diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitOperation.java b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitOperation.java
index 55ae08b..f37d488 100644
--- a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitOperation.java
+++ b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitOperation.java
@@ -32,6 +32,7 @@ public interface GitOperation {
String LOG_OPERATION = "log";
String PUSH_OPERATION = "push";
String PULL_OPERATION = "pull";
+ String MERGE_OPERATION = "merge";
String SHOW_BRANCHES = "showBranches";
String CHERRYPICK_OPERATION = "cherryPick";
String REMOTE_ADD_OPERATION = "remoteAdd";
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 8d671ad..930f19a 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
@@ -31,6 +31,8 @@ import org.apache.camel.util.ObjectHelper;
import org.eclipse.jgit.api.CherryPickResult;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.ListBranchCommand.ListMode;
+import org.eclipse.jgit.api.MergeCommand.FastForwardMode;
+import org.eclipse.jgit.api.MergeResult;
import org.eclipse.jgit.api.PullResult;
import org.eclipse.jgit.api.RemoteAddCommand;
import org.eclipse.jgit.api.Status;
@@ -141,6 +143,10 @@ public class GitProducer extends DefaultProducer {
case GitOperation.PULL_OPERATION:
doPull(exchange, operation);
break;
+
+ case GitOperation.MERGE_OPERATION:
+ doMerge(exchange, operation);
+ break;
case GitOperation.CREATE_TAG_OPERATION:
doCreateTag(exchange, operation);
@@ -418,6 +424,23 @@ public class GitProducer extends DefaultProducer {
}
updateExchange(exchange, result);
}
+
+ protected void doMerge(Exchange exchange, String operation) throws Exception {
+ MergeResult result = null;
+ ObjectId mergeBase;
+ try {
+ if (ObjectHelper.isEmpty(endpoint.getBranchName())) {
+ throw new IllegalArgumentException("Branch name must be specified to execute " + operation);
+ }
+ mergeBase = git.getRepository().resolve(endpoint.getBranchName());
+ git.checkout().setName("master").call();
+ result = git.merge().include(mergeBase).setFastForward(FastForwardMode.FF).setCommit(true).call();
+ } catch (Exception e) {
+ LOG.error("There was an error in Git " + operation + " operation");
+ throw e;
+ }
+ updateExchange(exchange, result);
+ }
protected void doCreateTag(Exchange exchange, String operation) throws Exception {
if (ObjectHelper.isEmpty(endpoint.getTagName())) {
diff --git a/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java b/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java
index 8fc324a..6308827 100644
--- a/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java
+++ b/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java
@@ -32,6 +32,7 @@ import org.apache.camel.component.git.GitConstants;
import org.apache.camel.component.git.GitTestSupport;
import org.eclipse.jgit.api.CreateBranchCommand.SetupUpstreamMode;
import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.api.MergeResult;
import org.eclipse.jgit.api.PullResult;
import org.eclipse.jgit.api.RemoteAddCommand;
import org.eclipse.jgit.api.Status;
@@ -746,6 +747,36 @@ public class GitProducerTest extends GitTestSupport {
assertNotNull(gcResult);
git.close();
}
+
+ @Test
+ public void mergeTest() throws Exception {
+ // Init
+ Git git = getGitTestRepository();
+ File gitDir = new File(gitLocalRepo, ".git");
+ assertEquals(gitDir.exists(), true);
+ File fileToAdd = new File(gitLocalRepo, filenameToAdd);
+ fileToAdd.createNewFile();
+ git.add().addFilepattern(filenameToAdd).call();
+ Status status = git.status().call();
+ assertTrue(status.getAdded().contains(filenameToAdd));
+ git.commit().setMessage(commitMessage).call();
+ validateGitLogs(git, commitMessage);
+ git.checkout().setCreateBranch(true).setName(branchTest).setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM).call();
+
+ // Test camel-git commit (with branch)
+ template.send("direct:commit-branch", new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(GitConstants.GIT_COMMIT_MESSAGE, commitMessageBranch);
+ }
+ });
+ validateGitLogs(git, commitMessageBranch, commitMessage);
+
+ // Test camel-git commit (with branch)
+ MergeResult result = template.requestBody("direct:merge", "", MergeResult.class);
+ assertEquals(result.getMergeStatus().toString(), "Fast-forward");
+ git.close();
+ }
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
@@ -782,6 +813,7 @@ public class GitProducerTest extends GitTestSupport {
from("direct:gc").to("git://" + gitLocalRepo + "?operation=gc");
from("direct:remoteAdd").to("git://" + gitLocalRepo + "?operation=remoteAdd&remotePath=https://github.com/oscerd/json-webserver-example.git&remoteName=origin");
from("direct:remoteList").to("git://" + gitLocalRepo + "?operation=remoteList");
+ from("direct:merge").to("git://" + gitLocalRepo + "?operation=merge&branchName=" + branchTest);
}
};
}
--
To stop receiving notification emails like this one, please contact
acosentino@apache.org.