private String findCorrespondingFromRevision()

in git-server/src/main/java/jetbrains/buildServer/buildTriggers/vcs/git/gitProxy/GitProxyChangesCollector.java [433:458]


  private String findCorrespondingFromRevision(@NotNull String topModVersion, @NotNull RepositoryStateData fromState, @NotNull RepositoryStateData toState,
                                               @NotNull Map<String, ModificationData> modificationDataMap, boolean expandSafeMergeBranches) {
    String topFromRevision = null;
    String topBranch = null;
    for (Map.Entry<String, String> toEntry : toState.getBranchRevisions().entrySet()) {
      if (topModVersion.equals(toEntry.getValue())) {
        topBranch = toEntry.getKey();
        String fromRev = fromState.getBranchRevisions().get(toEntry.getKey());
        if (fromRev != null && !fromRev.equals(topModVersion)) {
          topFromRevision = fromRev;
          break;
        }
      }
    }

    // try to find from revision for original branch for safe merge
    if (expandSafeMergeBranches && topFromRevision == null && topBranch != null && topBranch.endsWith("/safe-merge")) {
      ModificationData correspondingModData = modificationDataMap.get(topModVersion);
      if (correspondingModData == null) return null;
      List<String> parentRevisions = correspondingModData.getParentRevisions();
      if (parentRevisions.isEmpty()) return null;
      String originalBranchRev = parentRevisions.size() >= 2 ? parentRevisions.get(1) : parentRevisions.get(0);
      return findCorrespondingFromRevision(originalBranchRev, fromState, toState, modificationDataMap, false);
    }
    return topFromRevision;
  }