Search in sources :

Example 11 with GitLineHandler

use of git4idea.commands.GitLineHandler in project google-cloud-intellij by GoogleCloudPlatform.

the class SetupCloudRepositoryAction method createEmptyGitRepository.

private static boolean createEmptyGitRepository(@NotNull final Project project, @NotNull VirtualFile root, @NotNull ProgressIndicator indicator) {
    final GitLineHandler gitLineHandler = new GitLineHandler(project, root, GitCommand.INIT);
    gitLineHandler.setStdoutSuppressed(false);
    GitHandlerUtil.runInCurrentThread(gitLineHandler, indicator, true, GitBundle.getString("initializing.title"));
    if (!gitLineHandler.errors().isEmpty()) {
        GitUIUtil.showOperationErrors(project, gitLineHandler.errors(), "git init");
        LOG.info("Failed to create empty git repo: " + gitLineHandler.errors());
        return false;
    }
    try {
        GitConfigUtil.setValue(project, root, "credential.https://source.developers.google.com.useHttpPath", "true");
    } catch (VcsException ex) {
        LOG.error("VcsException while setting up credential parameters (credentials will be not be cached " + "per project url)" + ex.toString());
    }
    GitInit.refreshAndConfigureVcsMappings(project, root, root.getPath());
    try {
        ApplicationManager.getApplication().invokeAndWait(new Runnable() {

            @Override
            public void run() {
                project.save();
            }
        }, indicator.getModalityState());
    } catch (ProcessCanceledException ex) {
        Thread.currentThread().interrupt();
        LOG.error("ProcessCanceledException while saving project: " + ex.toString());
        return false;
    }
    return true;
}
Also used : GitLineHandler(git4idea.commands.GitLineHandler) VcsException(com.intellij.openapi.vcs.VcsException) ProcessCanceledException(com.intellij.openapi.progress.ProcessCanceledException)

Example 12 with GitLineHandler

use of git4idea.commands.GitLineHandler in project google-cloud-intellij by GoogleCloudPlatform.

the class ProjectRepositoryValidator method unstash.

private void unstash(@NotNull final Project project, @NotNull final Ref<StashInfo> targetStash, @NotNull final VirtualFile root) {
    if (repoState.getSourceRepository() == null || repoState.getOriginalBranchName() == null || (!repoState.getOriginalBranchName().equals(repoState.getSourceRepository().getCurrentBranchName()) && !repoState.getOriginalBranchName().equals(repoState.getSourceRepository().getCurrentRevision()))) {
        Messages.showErrorDialog(GctBundle.getString("clouddebug.erroroncheckout", repoState.getOriginalBranchName()), "Error");
        return;
    }
    final GitLineHandler handler = new GitLineHandler(project, root, GitCommand.STASH);
    handler.addParameters("apply");
    handler.addParameters("--index");
    addStashParameter(project, handler, targetStash.get().getStash());
    final AtomicBoolean conflict = new AtomicBoolean();
    handler.addLineListener(new GitLineHandlerAdapter() {

        @Override
        public void onLineAvailable(String line, Key outputType) {
            if (line.contains("Merge conflict")) {
                conflict.set(true);
            }
        }
    });
    GitUntrackedFilesOverwrittenByOperationDetector untrackedFilesDetector = new GitUntrackedFilesOverwrittenByOperationDetector(root);
    GitLocalChangesWouldBeOverwrittenDetector localChangesDetector = new GitLocalChangesWouldBeOverwrittenDetector(root, MERGE);
    handler.addLineListener(untrackedFilesDetector);
    handler.addLineListener(localChangesDetector);
    AccessToken token = DvcsUtil.workingTreeChangeStarted(project);
    try {
        final Ref<GitCommandResult> result = Ref.create();
        ProgressManager.getInstance().run(new Task.Modal(handler.project(), GitBundle.getString("unstash.unstashing"), false) {

            @Override
            public void run(@NotNull final ProgressIndicator indicator) {
                indicator.setIndeterminate(true);
                handler.addLineListener(new GitHandlerUtil.GitLineHandlerListenerProgress(indicator, handler, "stash", false));
                Git git = ServiceManager.getService(Git.class);
                result.set(git.runCommand(new Computable.PredefinedValueComputable<GitLineHandler>(handler)));
            }
        });
        ServiceManager.getService(project, GitPlatformFacade.class).hardRefresh(root);
        GitCommandResult res = result.get();
        if (conflict.get()) {
            Messages.showDialog(GctBundle.getString("clouddebug.unstashmergeconflicts"), "Merge Conflicts", new String[] { "Ok" }, 0, Messages.getErrorIcon());
        } else if (untrackedFilesDetector.wasMessageDetected()) {
            GitUntrackedFilesHelper.notifyUntrackedFilesOverwrittenBy(project, root, untrackedFilesDetector.getRelativeFilePaths(), "unstash", null);
        } else if (localChangesDetector.wasMessageDetected()) {
            LocalChangesWouldBeOverwrittenHelper.showErrorDialog(project, root, "unstash", localChangesDetector.getRelativeFilePaths());
        } else if (!res.success()) {
            GitUIUtil.showOperationErrors(project, handler.errors(), handler.printableCommandLine());
        } else if (res.success()) {
            ProgressManager.getInstance().run(new Task.Modal(project, GctBundle.getString("clouddebug.removestashx", targetStash.get().getStash()), false) {

                @Override
                public void run(@NotNull ProgressIndicator indicator) {
                    if (project == null) {
                        return;
                    }
                    final GitSimpleHandler h = new GitSimpleHandler(project, root, GitCommand.STASH);
                    h.addParameters("drop");
                    addStashParameter(project, h, targetStash.get().getStash());
                    try {
                        h.run();
                        h.unsilence();
                    } catch (final VcsException ex) {
                        ApplicationManager.getApplication().invokeLater(new Runnable() {

                            @Override
                            public void run() {
                                GitUIUtil.showOperationError(project, ex, h.printableCommandLine());
                            }
                        });
                    }
                }
            });
        }
    } finally {
        DvcsUtil.workingTreeChangeFinished(project, token);
    }
}
Also used : GitLineHandler(git4idea.commands.GitLineHandler) Task(com.intellij.openapi.progress.Task) GitSimpleHandler(git4idea.commands.GitSimpleHandler) GitLocalChangesWouldBeOverwrittenDetector(git4idea.commands.GitLocalChangesWouldBeOverwrittenDetector) GitPlatformFacade(git4idea.GitPlatformFacade) GitUntrackedFilesOverwrittenByOperationDetector(git4idea.commands.GitUntrackedFilesOverwrittenByOperationDetector) GitCommandResult(git4idea.commands.GitCommandResult) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Git(git4idea.commands.Git) AccessToken(com.intellij.openapi.application.AccessToken) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) VcsException(com.intellij.openapi.vcs.VcsException) GitLineHandlerAdapter(git4idea.commands.GitLineHandlerAdapter) Key(com.intellij.openapi.util.Key) Computable(com.intellij.openapi.util.Computable)

Aggregations

GitLineHandler (git4idea.commands.GitLineHandler)12 AccessToken (com.intellij.openapi.application.AccessToken)4 VcsException (com.intellij.openapi.vcs.VcsException)4 Computable (com.intellij.openapi.util.Computable)2 Key (com.intellij.openapi.util.Key)2 ChangeListManager (com.intellij.openapi.vcs.changes.ChangeListManager)2 VirtualFile (com.intellij.openapi.vfs.VirtualFile)2 GitLineHandlerAdapter (git4idea.commands.GitLineHandlerAdapter)2 GitRepositoryManager (git4idea.repo.GitRepositoryManager)2 Nullable (org.jetbrains.annotations.Nullable)2 ProcessCanceledException (com.intellij.openapi.progress.ProcessCanceledException)1 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)1 Task (com.intellij.openapi.progress.Task)1 FilePath (com.intellij.openapi.vcs.FilePath)1 GitPlatformFacade (git4idea.GitPlatformFacade)1 GitVcs (git4idea.GitVcs)1 Git (git4idea.commands.Git)1 GitCommandResult (git4idea.commands.GitCommandResult)1 GitLocalChangesWouldBeOverwrittenDetector (git4idea.commands.GitLocalChangesWouldBeOverwrittenDetector)1 GitSimpleHandler (git4idea.commands.GitSimpleHandler)1