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)); } } });