Search in sources :

Example 11 with PropertyValue

use of org.jetbrains.idea.svn.properties.PropertyValue in project intellij-community by JetBrains.

the class GatheringChangelistBuilder method mergeInfoChanged.

private boolean mergeInfoChanged(final File file) {
    SvnTarget target = SvnTarget.fromFile(file);
    try {
        PropertyValue current = myVcs.getFactory(target).createPropertyClient().getProperty(target, SvnPropertyKeys.MERGE_INFO, false, SVNRevision.WORKING);
        PropertyValue base = myVcs.getFactory(target).createPropertyClient().getProperty(target, SvnPropertyKeys.MERGE_INFO, false, SVNRevision.BASE);
        if (current != null) {
            return base == null || !Comparing.equal(current, base);
        }
    } catch (VcsException e) {
        LOG.info(e);
    }
    return false;
}
Also used : SvnTarget(org.tmatesoft.svn.core.wc2.SvnTarget) VcsException(com.intellij.openapi.vcs.VcsException) PropertyValue(org.jetbrains.idea.svn.properties.PropertyValue)

Example 12 with PropertyValue

use of org.jetbrains.idea.svn.properties.PropertyValue in project intellij-community by JetBrains.

the class BranchInfo method goUpInRepo.

@NotNull
private SvnMergeInfoCache.MergeCheckResult goUpInRepo(final long revisionAsked, final long targetRevision, final SVNURL branchUrl, final String trunkUrl) throws VcsException, SVNException {
    SvnMergeInfoCache.MergeCheckResult result;
    Set<Long> mergeInfo = myPathMergedMap.get(branchUrl.toString() + "@" + targetRevision);
    if (mergeInfo != null) {
        // take from self or first parent with info; do not go further
        result = SvnMergeInfoCache.MergeCheckResult.getInstance(mergeInfo.contains(revisionAsked));
    } else {
        SvnTarget target = SvnTarget.fromURL(branchUrl);
        PropertyValue mergeinfoProperty = myVcs.getFactory(target).createPropertyClient().getProperty(target, SvnPropertyKeys.MERGE_INFO, false, SVNRevision.create(targetRevision));
        if (mergeinfoProperty == null) {
            final String newTrunkUrl = SVNPathUtil.removeTail(trunkUrl).trim();
            final SVNURL newBranchUrl = branchUrl.removePathTail();
            final String absoluteTrunk = SVNPathUtil.append(myInfo.getRepoUrl(), newTrunkUrl);
            result = newTrunkUrl.length() <= 1 || newBranchUrl.toString().length() <= myInfo.getRepoUrl().length() || newBranchUrl.toString().equals(absoluteTrunk) ? SvnMergeInfoCache.MergeCheckResult.NOT_MERGED : goUpInRepo(revisionAsked, targetRevision, newBranchUrl, newTrunkUrl);
        } else {
            result = processMergeinfoProperty(branchUrl.toString() + "@" + targetRevision, revisionAsked, mergeinfoProperty, trunkUrl, false);
        }
    }
    return result;
}
Also used : SVNURL(org.tmatesoft.svn.core.SVNURL) SvnTarget(org.tmatesoft.svn.core.wc2.SvnTarget) PropertyValue(org.jetbrains.idea.svn.properties.PropertyValue) NotNull(org.jetbrains.annotations.NotNull)

Example 13 with PropertyValue

use of org.jetbrains.idea.svn.properties.PropertyValue in project intellij-community by JetBrains.

the class BranchInfo method checkPathGoingUp.

@NotNull
private SvnMergeInfoCache.MergeCheckResult checkPathGoingUp(final long revisionAsked, final long targetRevision, @NotNull String branchRootPath, @NotNull String path, final String trunkUrl, final boolean self) throws VcsException, SVNException {
    SvnMergeInfoCache.MergeCheckResult result;
    final File pathFile = new File(path);
    // check whether we locally have path
    if (targetRevision == -1 && !pathFile.exists()) {
        result = goUp(revisionAsked, targetRevision, branchRootPath, path, trunkUrl);
    } else {
        final Info svnInfo = myVcs.getInfo(pathFile);
        if (svnInfo == null || svnInfo.getURL() == null) {
            LOG.info("Svninfo for " + pathFile + " is null or not full.");
            result = SvnMergeInfoCache.MergeCheckResult.NOT_MERGED;
        } else {
            final long actualRevision = svnInfo.getRevision().getNumber();
            final long targetRevisionCorrected = (targetRevision == -1) ? actualRevision : targetRevision;
            // here we know local URL and revision
            // check existing info
            final String keyString = path + "@" + targetRevisionCorrected;
            final Set<Long> selfInfo = self ? myNonInheritablePathMergedMap.get(keyString) : null;
            final Set<Long> mergeInfo = myPathMergedMap.get(keyString);
            if (mergeInfo != null || selfInfo != null) {
                boolean merged = mergeInfo != null && mergeInfo.contains(revisionAsked) || selfInfo != null && selfInfo.contains(revisionAsked);
                // take from self or first parent with info; do not go further
                result = SvnMergeInfoCache.MergeCheckResult.getInstance(merged);
            } else {
                if (actualRevision != targetRevisionCorrected) {
                    myMixedRevisionsFound = true;
                }
                SvnTarget target;
                SVNRevision revision;
                if (actualRevision == targetRevisionCorrected) {
                    // look in WC
                    target = SvnTarget.fromFile(pathFile, SVNRevision.WORKING);
                    revision = SVNRevision.WORKING;
                } else {
                    // in repo
                    target = SvnTarget.fromURL(svnInfo.getURL());
                    revision = SVNRevision.create(targetRevisionCorrected);
                }
                PropertyValue mergeinfoProperty = myVcs.getFactory(target).createPropertyClient().getProperty(target, SvnPropertyKeys.MERGE_INFO, false, revision);
                result = mergeinfoProperty == null ? goUp(revisionAsked, targetRevisionCorrected, branchRootPath, path, trunkUrl) : processMergeinfoProperty(keyString, revisionAsked, mergeinfoProperty, trunkUrl, self);
            }
        }
    }
    return result;
}
Also used : SvnTarget(org.tmatesoft.svn.core.wc2.SvnTarget) PropertyValue(org.jetbrains.idea.svn.properties.PropertyValue) Info(org.jetbrains.idea.svn.info.Info) SVNRevision(org.tmatesoft.svn.core.wc.SVNRevision) File(java.io.File) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

PropertyValue (org.jetbrains.idea.svn.properties.PropertyValue)13 VcsException (com.intellij.openapi.vcs.VcsException)6 File (java.io.File)6 VfsUtilCore.virtualToIoFile (com.intellij.openapi.vfs.VfsUtilCore.virtualToIoFile)4 VirtualFile (com.intellij.openapi.vfs.VirtualFile)4 NotNull (org.jetbrains.annotations.NotNull)4 PropertyClient (org.jetbrains.idea.svn.properties.PropertyClient)4 Nullable (org.jetbrains.annotations.Nullable)3 PropertyData (org.jetbrains.idea.svn.properties.PropertyData)3 SvnTarget (org.tmatesoft.svn.core.wc2.SvnTarget)3 SVNURL (org.tmatesoft.svn.core.SVNURL)2 DiffContent (com.intellij.diff.contents.DiffContent)1 EmptyContent (com.intellij.diff.contents.EmptyContent)1 Pair (com.intellij.openapi.util.Pair)1 Trinity (com.intellij.openapi.util.Trinity)1 HashMap (com.intellij.util.containers.HashMap)1 HashMap (com.intellij.util.containers.hash.HashMap)1 ArrayList (java.util.ArrayList)1 SvnVcs (org.jetbrains.idea.svn.SvnVcs)1 ClientFactory (org.jetbrains.idea.svn.api.ClientFactory)1