Created
January 7, 2016 16:23
-
-
Save bltavares/ac0e87695f4c86ea692d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/main/java/br/gov/servicos/editor/git/RepositorioGit.java b/src/main/java/br/gov/servicos/editor/git/RepositorioGit.java | |
index ef92041..65b7e5f 100644 | |
--- a/src/main/java/br/gov/servicos/editor/git/RepositorioGit.java | |
+++ b/src/main/java/br/gov/servicos/editor/git/RepositorioGit.java | |
@@ -7,14 +7,19 @@ import lombok.experimental.FieldDefaults; | |
import lombok.experimental.NonFinal; | |
import lombok.extern.slf4j.Slf4j; | |
import net.logstash.logback.marker.LogstashMarker; | |
-import org.eclipse.jgit.api.*; | |
+import org.eclipse.jgit.api.Git; | |
+import org.eclipse.jgit.api.MergeResult; | |
+import org.eclipse.jgit.api.RebaseCommand; | |
+import org.eclipse.jgit.api.RebaseResult; | |
import org.eclipse.jgit.api.errors.GitAPIException; | |
import org.eclipse.jgit.api.errors.JGitInternalException; | |
import org.eclipse.jgit.api.errors.WrongRepositoryStateException; | |
import org.eclipse.jgit.internal.JGitText; | |
import org.eclipse.jgit.lib.*; | |
+import org.eclipse.jgit.merge.MergeStrategy; | |
import org.eclipse.jgit.revwalk.RevCommit; | |
import org.eclipse.jgit.revwalk.RevWalk; | |
+import org.eclipse.jgit.transport.FetchResult; | |
import org.eclipse.jgit.transport.RefSpec; | |
import org.eclipse.jgit.transport.TrackingRefUpdate; | |
import org.eclipse.jgit.treewalk.filter.AndTreeFilter; | |
@@ -47,7 +52,6 @@ import static org.eclipse.jgit.api.ListBranchCommand.ListMode.ALL; | |
import static org.eclipse.jgit.api.ListBranchCommand.ListMode.REMOTE; | |
import static org.eclipse.jgit.lib.ConfigConstants.*; | |
import static org.eclipse.jgit.lib.Constants.*; | |
-import static org.eclipse.jgit.merge.MergeStrategy.THEIRS; | |
@Slf4j | |
@Service | |
@@ -257,31 +261,24 @@ public class RepositorioGit { | |
public void pull() { | |
try { | |
- PullResult result = git.pull() | |
- .setRebase(true) | |
- .setStrategy(THEIRS) | |
+ FetchResult fetchResult = git.fetch() | |
.setProgressMonitor(new LogstashProgressMonitor(log)) | |
.call(); | |
- | |
+ RebaseResult rebaseResult = git.rebase() | |
+ .setUpstream("origin/master") | |
+ .setStrategy(MergeStrategy.THEIRS) | |
+ .setProgressMonitor(new LogstashProgressMonitor(log)) | |
+ .call(); | |
Marker marker = append("git.state", git.getRepository().getRepositoryState().toString()) | |
.and(append("git.branch", git.getRepository().getBranch())) | |
- .and(append("pull.fetched.from", result.getFetchedFrom())) | |
- .and(append("pull.fetch.result.updates", result.getFetchResult() == null ? null : result.getFetchResult().getMessages())) | |
- .and(append("pull.fetch.result.updates", result.getFetchResult() == null ? null : result.getFetchResult().getTrackingRefUpdates().stream().map(TrackingRefUpdate::getResult).map(Enum::toString).collect(toList()))) | |
- .and(append("pull.rebase.result", result.getRebaseResult() == null ? null : result.getRebaseResult().getStatus().toString())) | |
- .and(append("pull.merge.result", result.getMergeResult() == null ? null : result.getMergeResult().getMergeStatus().toString())); | |
- | |
- log.info(marker, "git pull em {}", git.getRepository().getBranch()); | |
- | |
- if (!result.isSuccessful()) { | |
- log.error(append("git.state", git.getRepository().getRepositoryState().toString()), "ERRO AO FAZER REBASE --- INICIANDO ABORT"); | |
- git.rebase().setStrategy(THEIRS).setOperation(RebaseCommand.Operation.ABORT).call(); | |
- log.error(append("git.state", git.getRepository().getRepositoryState().toString()), "ERRO AO FAZER REBASE --- APÓS O ABORT"); | |
- throw new IllegalStateException("Não foi possível completar o git pull"); | |
+ .and(append("pull.fetch.result.updates", fetchResult.getMessages())) | |
+ .and(append("pull.fetch.result.updates", fetchResult.getTrackingRefUpdates().stream().map(TrackingRefUpdate::getResult).map(Enum::toString).collect(toList()))) | |
+ .and(append("pull.rebase.result", rebaseResult.getStatus().toString())); | |
+ | |
+ log.info(marker, "git fetch/rebase em {}", git.getRepository().getBranch()); | |
- } | |
} catch (WrongRepositoryStateException e) { // o repositório pode entrar em estado inválido, e neste caso fazemos um rebase e tentamos | |
try { | |
git.rebase().setOperation(RebaseCommand.Operation.ABORT).call(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment