MergeCheckResult (@NotNull String repositoryRelativePath, long revisionNumber) { MergeCheckResult result = MergeCheckResult.NOT_EXISTS; String sourceRelativePath = Url.getRelative(myMergeContext.getRepositoryRelativeSourcePath(), ensureStartSlash(repositoryRelativePath)); // TODO: SVNPathUtil.getRelativePath() is @NotNull - probably we need to check also isEmpty() here? if (sourceRelativePath != null) { InfoProcessor processor = new InfoProcessor(sourceRelativePath, myMergeContext.getRepositoryRelativeSourcePath(), revisionNumber); String key = toKey(sourceRelativePath); synchronized (myMergeInfoLock) { Map<String, MergeRangeList> mergeInfo = myMergeInfoMap.get(key); if (mergeInfo != null) { processor.process(key, mergeInfo); } else { for (Map.Entry<String, Map<String, MergeRangeList>> entry : myMergeInfoMap.tailMap(key).entrySet()) { if (isUnder(entry.getKey(), key) && processor.process(entry.getKey(), entry.getValue())) { break; } } } } result = MergeCheckResult.getInstance(processor.isMerged()); } return result; }