public List getConflicts()

in ddm-rrm-git-integration/src/main/java/com/epam/digital/data/platform/management/gitintegration/service/JGitServiceImpl.java [186:231]


  public List<String> getConflicts(@NonNull String repositoryName) {
    log.debug("Retrieving conflicts in repository {}", repositoryName);
    var repositoryDirectory = getExistedRepository(repositoryName);
    log.trace("Synchronizing repo {}", repositoryName);
    var lock = getLock(repositoryName);
    lock.lock();
    log.trace("Opening repo {}", repositoryName);
    try (var git = openRepo(repositoryDirectory)) {
      fetch(
          git,
          Constants.R_HEADS
              + gerritPropertiesConfig.getHeadBranch()
              + ":"
              + Constants.R_REMOTES
              + Constants.DEFAULT_REMOTE_NAME
              + "/"
              + gerritPropertiesConfig.getHeadBranch());
      var originMasterId =
          git.getRepository()
              .resolve(
                  Constants.DEFAULT_REMOTE_NAME + "/" + gerritPropertiesConfig.getHeadBranch());
      var mergeResult =
          git.merge()
              .include(originMasterId)
              .setCommit(false)
              .setFastForward(MergeCommand.FastForwardMode.NO_FF)
              .call();
      Map<String, int[][]> conflicts = mergeResult.getConflicts();
      log.info("Conflicts: {}", conflicts);
      git.reset().setMode(ResetType.HARD).call();
      if (conflicts != null && conflicts.size() > 0) {
        return conflicts.keySet().stream().collect(Collectors.toList());
      } else {
        return Collections.emptyList();
      }
    } catch (IOException | GitAPIException e) {
      throw new GitCommandException(
          String.format(
              "Exception occurred during getting conflicts for repository %s: %s",
              repositoryDirectory.getName(), e.getMessage()),
          e);
    } finally {
      lock.unlock();
      log.trace("Repo {} lock released", repositoryName);
    }
  }