private void ensureImplicitMergeinfo(MergePath parent, MergePath child, boolean childInheritsParent, SVNEntry entry, long revision1, long revision2, SVNRepository repository) throws SVNException { if (child.myImplicitMergeInfo != null) { return; } if (childInheritsParent) { inheritImplicitMergeinfoFromParent(parent, child, revision1, revision2, repository); } else { boolean[] indirect = {false}; Map[] mergeinfo = getFullMergeInfo(entry, false, true, indirect, SVNMergeInfoInheritance.INHERITED, repository, child.myPath, Math.max(revision1, revision2), Math.min(revision1, revision2)); child.myImplicitMergeInfo = mergeinfo[1]; } }
private void inheritImplicitMergeinfoFromParent(MergePath parent, MergePath child, long revision1, long revision2, SVNRepository repository) throws SVNException { if (parent.myImplicitMergeInfo == null) { SVNEntry entry = myWCAccess.getEntry(parent.myPath, false); Map[] mergeinfo = getFullMergeInfo(entry, false, true, null, SVNMergeInfoInheritance.INHERITED, repository, parent.myPath, Math.max(revision1, revision2), Math.min(revision1, revision2)); parent.myImplicitMergeInfo = mergeinfo[1]; } child.myImplicitMergeInfo = new TreeMap(); String ancestorPath = SVNPathUtil.getCommonPathAncestor(parent.myPath.getAbsolutePath().replace(File.separatorChar, '/'), child.myPath.getAbsolutePath().replace(File.separatorChar, '/')); String childPath = SVNPathUtil.getPathAsChild(ancestorPath, child.myPath.getAbsolutePath().replace(File.separatorChar, '/')); if (childPath.startsWith("/")) { childPath = childPath.substring(1); } SVNMergeInfoUtil.adjustMergeInfoSourcePaths(child.myImplicitMergeInfo, childPath, parent.myImplicitMergeInfo); }
public Object[] calculateRemainingRangeList(File targetFile, SVNEntry entry, SVNURL sourceRoot, boolean[] indirect, SVNURL url1, long revision1, SVNURL url2, long revision2, SVNMergeRange range) throws SVNException { SVNMergeRangeList remainingRangeList = null; Map targetMergeInfo = null; Map implicitMergeInfo = null; boolean honorMergeInfo = isHonorMergeInfo(); if (honorMergeInfo) { MergePath mergeTarget = new MergePath(targetFile); myRepository1.setLocation(entry.getSVNURL(), false); Map[] fullMergeInfo = getFullMergeInfo(entry, true, true, indirect, SVNMergeInfoInheritance.INHERITED, myRepository1, targetFile, Math.max(revision1, revision2), Math.min(revision1, revision2)); targetMergeInfo = fullMergeInfo[0]; implicitMergeInfo = fullMergeInfo[1]; myRepository1.setLocation(url1, false); if (!myIsRecordOnly) { calculateRemainingRanges(null, mergeTarget, sourceRoot, url1, revision1, url2, revision2, targetMergeInfo, myImplicitSrcGap, false, false, entry, myRepository1); remainingRangeList = mergeTarget.myRemainingRanges; } } if (!honorMergeInfo || myIsRecordOnly) { remainingRangeList = new SVNMergeRangeList(range); } return new Object[]{remainingRangeList, targetMergeInfo, implicitMergeInfo}; }
public Object[] calculateRemainingRangeList(File targetFile, SVNEntry entry, SVNURL sourceRoot, boolean[] indirect, SVNURL url1, long revision1, SVNURL url2, long revision2, SVNMergeRange range) throws SVNException { SVNMergeRangeList remainingRangeList = null; Map targetMergeInfo = null; Map implicitMergeInfo = null; boolean honorMergeInfo = isHonorMergeInfo(); if (honorMergeInfo) { MergePath mergeTarget = new MergePath(); myRepository1.setLocation(entry.getSVNURL(), false); Map[] fullMergeInfo = getFullMergeInfo(entry, indirect, SVNMergeInfoInheritance.INHERITED, myRepository1, targetFile, Math.max(revision1, revision2), Math.min(revision1, revision2)); targetMergeInfo = fullMergeInfo[0]; implicitMergeInfo = fullMergeInfo[1]; myRepository1.setLocation(url1, false); if (!myIsRecordOnly) { calculateRemainingRanges(null, mergeTarget, sourceRoot, url1, revision1, url2, revision2, targetMergeInfo, implicitMergeInfo, myImplicitSrcGap, false, entry, myRepository1); remainingRangeList = mergeTarget.myRemainingRanges; } } if (!honorMergeInfo || myIsRecordOnly) { remainingRangeList = new SVNMergeRangeList(range); } return new Object[]{remainingRangeList, targetMergeInfo, implicitMergeInfo}; }
Map mergeInfo[] = getFullMergeInfo(childEntry, indirect, SVNMergeInfoInheritance.INHERITED, repository, child.myPath, Math.max(revision1, revision2), Math.min(revision1, revision2)); child.myPreMergeMergeInfo = mergeInfo[0];
protected Object[] calculateRemainingRangeList(File targetFile, SVNEntry entry, SVNURL sourceRoot, boolean[] indirect, SVNURL url1, long revision1, SVNURL url2, long revision2, SVNMergeRange range) throws SVNException { SVNMergeRangeList remainingRangeList = null; Map targetMergeInfo = null; Map implicitMergeInfo = null; boolean honorMergeInfo = isHonorMergeInfo(); if (honorMergeInfo) { MergePath mergeTarget = new MergePath(); myRepository1.setLocation(entry.getSVNURL(), false); Map[] fullMergeInfo = getFullMergeInfo(entry, indirect, SVNMergeInfoInheritance.INHERITED, myRepository1, targetFile, Math.max(revision1, revision2), Math.min(revision1, revision2)); targetMergeInfo = fullMergeInfo[0]; implicitMergeInfo = fullMergeInfo[1]; myRepository1.setLocation(url1, false); if (!myIsRecordOnly) { calculateRemainingRanges(null, mergeTarget, sourceRoot, url1, revision1, url2, revision2, targetMergeInfo, implicitMergeInfo, false, entry, myRepository1); remainingRangeList = mergeTarget.myRemainingRanges; } } if (!honorMergeInfo || myIsRecordOnly) { remainingRangeList = new SVNMergeRangeList(range); } return new Object[]{remainingRangeList, targetMergeInfo, implicitMergeInfo}; }
if (index == 0) { boolean indirect[] = { false }; Map[] mergeInfo = getFullMergeInfo(childEntry, false, true, indirect, SVNMergeInfoInheritance.INHERITED, repository, child.myPath, Math.max(revision1, revision2), Math.min(revision1, revision2)); child.myImplicitMergeInfo = mergeInfo[1]; Map mergeInfo[] = getFullMergeInfo(childEntry, true, index == 0, indirect, SVNMergeInfoInheritance.INHERITED, repository, child.myPath, Math.max(revision1, revision2), Math.min(revision1, revision2));
Map mergeInfo[] = getFullMergeInfo(childEntry, indirect, SVNMergeInfoInheritance.INHERITED, repository, child.myPath, Math.max(revision1, revision2), Math.min(revision1, revision2));