From 1c7e3c169d0a0bd7a5271fa8cedd37350bc35a12 Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Tue, 14 Jan 2025 13:30:35 +0200 Subject: [PATCH] Fix push result status check --- .../server/service/sync/vc/GitRepository.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java index 8498b4a7e4..4841f05471 100644 --- a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java +++ b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java @@ -94,6 +94,10 @@ import java.util.function.Function; import java.util.stream.Collectors; import static org.eclipse.jgit.api.ListBranchCommand.ListMode; +import static org.eclipse.jgit.transport.RemoteRefUpdate.Status.REJECTED_NODELETE; +import static org.eclipse.jgit.transport.RemoteRefUpdate.Status.REJECTED_NONFASTFORWARD; +import static org.eclipse.jgit.transport.RemoteRefUpdate.Status.REJECTED_OTHER_REASON; +import static org.eclipse.jgit.transport.RemoteRefUpdate.Status.REJECTED_REMOTE_CHANGED; @Slf4j public class GitRepository { @@ -358,8 +362,10 @@ public class GitRepository { result.forEach(pushResult -> { for (RemoteRefUpdate update : pushResult.getRemoteUpdates()) { RemoteRefUpdate.Status status = update.getStatus(); - if (status != RemoteRefUpdate.Status.OK && status != RemoteRefUpdate.Status.UP_TO_DATE) { - throw new RuntimeException("Failed to push changes: " + Optional.ofNullable(update.getMessage()).orElseGet(status::name)); + if (status == REJECTED_NONFASTFORWARD || status == REJECTED_NODELETE || + status == REJECTED_REMOTE_CHANGED || status == REJECTED_OTHER_REASON) { + throw new RuntimeException("Remote repository answered with error: " + + Optional.ofNullable(update.getMessage()).orElseGet(status::name)); } } });