Search in sources :

Example 11 with Info

use of org.jetbrains.idea.svn.info.Info in project intellij-community by JetBrains.

the class ConflictCreator method create.

public void create() throws PatchSyntaxException, IOException {
    // local changes, do not commit
    for (TreeConflictData.FileData data : myData.getLeftFiles()) {
        applyFileData(myMineDir, data);
    }
    final PatchReader reader = new PatchReader(myData.getTheirsPatch());
    final List<TextFilePatch> patches = reader.readTextPatches();
    final List<FilePatch> filePatchList = new ArrayList<>(patches);
    for (Iterator<FilePatch> iterator = filePatchList.iterator(); iterator.hasNext(); ) {
        final FilePatch patch = iterator.next();
        if (patch.isDeletedFile()) {
            myClientRunner.delete(myTheirsDir, patch.getBeforeName());
            iterator.remove();
        }
    }
    if (!filePatchList.isEmpty()) {
        PatchApplier<BinaryFilePatch> applier = new PatchApplier<>(myProject, myTheirsDir, filePatchList, (LocalChangeList) null, null, null);
        applier.setIgnoreContentRootsCheck();
        applier.execute();
        Assert.assertEquals(0, applier.getRemainingPatches().size());
    }
    TimeoutUtil.sleep(10);
    SvnVcs vcs = SvnVcs.getInstance(myProject);
    for (TextFilePatch patch : patches) {
        if (patch.isNewFile() || !Comparing.equal(patch.getAfterName(), patch.getBeforeName())) {
            final String afterName = patch.getAfterName();
            final String[] parts = afterName.split("/");
            String subPath = "";
            for (String part : parts) {
                final String path = subPath + part;
                Info info = vcs.getInfo(new File(myTheirsDir.getPath(), path));
                if (info == null || info.getURL() == null) {
                    myClientRunner.add(myTheirsDir, path);
                }
                subPath += part + "/";
            }
            if (!patch.isNewFile()) {
                myClientRunner.delete(myTheirsDir, patch.getBeforeName());
            }
        }
    }
    VfsUtilCore.visitChildrenRecursively(myTheirsDir, new VirtualFileVisitor() {

        @NotNull
        @Override
        public Result visitFileEx(@NotNull VirtualFile file) {
            if (!myTheirsDir.equals(file) && file.isDirectory() && file.getChildren().length == 0) {
                try {
                    myClientRunner.delete(myTheirsDir, file.getPath());
                } catch (IOException e) {
                    throw new VisitorException(e);
                }
            }
            return file.isDirectory() && SvnUtil.isAdminDirectory(file) ? SKIP_CHILDREN : CONTINUE;
        }
    }, IOException.class);
    // this will commit all patch changes
    myClientRunner.checkin(myTheirsDir);
    // this will create the conflict
    myClientRunner.update(myMineDir);
    myClientRunner.update(myTheirsDir);
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) ArrayList(java.util.ArrayList) IOException(java.io.IOException) Info(org.jetbrains.idea.svn.info.Info) VirtualFileVisitor(com.intellij.openapi.vfs.VirtualFileVisitor) NotNull(org.jetbrains.annotations.NotNull) PatchApplier(com.intellij.openapi.diff.impl.patch.formove.PatchApplier) VirtualFile(com.intellij.openapi.vfs.VirtualFile) File(java.io.File)

Example 12 with Info

use of org.jetbrains.idea.svn.info.Info in project intellij-community by JetBrains.

the class CmdStatusClient method createStatusCallback.

public static SvnStatusHandler.ExternalDataCallback createStatusCallback(final StatusConsumer handler, final File base, final Info infoBase, final SvnStatusHandler[] svnHandl) {
    final Map<File, Info> externalsMap = new HashMap<>();
    final String[] changelistName = new String[1];
    return new SvnStatusHandler.ExternalDataCallback() {

        @Override
        public void switchPath() {
            final PortableStatus pending = svnHandl[0].getPending();
            pending.setChangelistName(changelistName[0]);
            try {
                //if (infoBase != null) {
                Info baseInfo = infoBase;
                File baseFile = base;
                final File pendingFile = new File(pending.getPath());
                if (!externalsMap.isEmpty()) {
                    for (File file : externalsMap.keySet()) {
                        if (FileUtil.isAncestor(file, pendingFile, false)) {
                            baseInfo = externalsMap.get(file);
                            baseFile = file;
                            break;
                        }
                    }
                }
                if (baseInfo != null) {
                    final String append;
                    final String systemIndependentPath = FileUtil.toSystemIndependentName(pending.getPath());
                    if (pendingFile.isAbsolute()) {
                        final String relativePath = FileUtil.getRelativePath(FileUtil.toSystemIndependentName(baseFile.getPath()), systemIndependentPath, '/');
                        append = SVNPathUtil.append(baseInfo.getURL().toString(), FileUtil.toSystemIndependentName(relativePath));
                    } else {
                        append = SVNPathUtil.append(baseInfo.getURL().toString(), systemIndependentPath);
                    }
                    pending.setURL(SVNURL.parseURIEncoded(append));
                }
                if (StatusType.STATUS_EXTERNAL.equals(pending.getNodeStatus())) {
                    externalsMap.put(pending.getFile(), pending.getInfo());
                }
                handler.consume(pending);
            } catch (SVNException e) {
                throw new SvnExceptionWrapper(e);
            }
        }

        @Override
        public void switchChangeList(String newList) {
            changelistName[0] = newList;
        }
    };
}
Also used : SVNException(org.tmatesoft.svn.core.SVNException) Info(org.jetbrains.idea.svn.info.Info) File(java.io.File)

Example 13 with Info

use of org.jetbrains.idea.svn.info.Info in project intellij-community by JetBrains.

the class PortableStatus method getFile.

@Override
public File getFile() {
    File file = super.getFile();
    if (file == null) {
        Info info = initInfo();
        file = info != null ? info.getFile() : file;
    }
    return file;
}
Also used : Info(org.jetbrains.idea.svn.info.Info) File(java.io.File)

Example 14 with Info

use of org.jetbrains.idea.svn.info.Info in project intellij-community by JetBrains.

the class PortableStatus method getURL.

@Override
public SVNURL getURL() {
    SVNURL url = super.getURL();
    if (url == null) {
        Info info = initInfo();
        url = info != null ? info.getURL() : url;
    }
    return url;
}
Also used : SVNURL(org.tmatesoft.svn.core.SVNURL) Info(org.jetbrains.idea.svn.info.Info)

Example 15 with Info

use of org.jetbrains.idea.svn.info.Info in project intellij-community by JetBrains.

the class PortableStatus method getRevision.

@NotNull
@Override
public SVNRevision getRevision() {
    final SVNRevision revision = super.getRevision();
    if (revision.isValid())
        return revision;
    final StatusType status = getContentsStatus();
    if (StatusType.STATUS_NONE.equals(status) || StatusType.STATUS_UNVERSIONED.equals(status) || StatusType.STATUS_ADDED.equals(status))
        return revision;
    final Info info = initInfo();
    return info == null ? revision : info.getRevision();
}
Also used : SVNRevision(org.tmatesoft.svn.core.wc.SVNRevision) Info(org.jetbrains.idea.svn.info.Info) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

Info (org.jetbrains.idea.svn.info.Info)32 File (java.io.File)18 VirtualFile (com.intellij.openapi.vfs.VirtualFile)11 VcsException (com.intellij.openapi.vcs.VcsException)6 NotNull (org.jetbrains.annotations.NotNull)6 SVNURL (org.tmatesoft.svn.core.SVNURL)6 SVNRevision (org.tmatesoft.svn.core.wc.SVNRevision)6 VfsUtilCore.virtualToIoFile (com.intellij.openapi.vfs.VfsUtilCore.virtualToIoFile)5 RootUrlInfo (org.jetbrains.idea.svn.RootUrlInfo)5 IOException (java.io.IOException)3 Nullable (org.jetbrains.annotations.Nullable)3 Test (org.junit.Test)3 SVNException (org.tmatesoft.svn.core.SVNException)3 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)2 FilePath (com.intellij.openapi.vcs.FilePath)2 ArrayList (java.util.ArrayList)2 SvnVcs (org.jetbrains.idea.svn.SvnVcs)2 SvnBindException (org.jetbrains.idea.svn.commandLine.SvnBindException)2 WCInfo (org.jetbrains.idea.svn.dialogs.WCInfo)2 SvnChangeList (org.jetbrains.idea.svn.history.SvnChangeList)2