use of git4idea.commands.GitCommandResult in project intellij-community by JetBrains.
the class GitFetcher method fetchNatively.
@NotNull
private static GitFetchResult fetchNatively(@NotNull GitRepository repository, @NotNull GitRemote remote, @Nullable String branch) {
Git git = Git.getInstance();
String[] additionalParams = branch != null ? new String[] { getFetchSpecForBranch(branch, remote.getName()) } : ArrayUtil.EMPTY_STRING_ARRAY;
GitFetchPruneDetector pruneDetector = new GitFetchPruneDetector();
GitCommandResult result = git.fetch(repository, remote, Collections.<GitLineHandlerListener>singletonList(pruneDetector), additionalParams);
GitFetchResult fetchResult;
if (result.success()) {
fetchResult = GitFetchResult.success();
} else if (result.cancelled()) {
fetchResult = GitFetchResult.cancel();
} else {
fetchResult = GitFetchResult.error(result.getErrorOutputAsJoinedString());
}
fetchResult.addPruneInfo(pruneDetector.getPrunedRefs());
return fetchResult;
}
use of git4idea.commands.GitCommandResult in project intellij-community by JetBrains.
the class GitRenameBranchOperation method execute.
@Override
protected void execute() {
while (hasMoreRepositories()) {
GitRepository repository = next();
GitCommandResult result = myGit.renameBranch(repository, myCurrentName, myNewName);
if (result.success()) {
refresh(repository);
markSuccessful(repository);
} else {
fatalError("Couldn't rename " + myCurrentName + " to " + myNewName, result.getErrorOutputAsJoinedString());
return;
}
}
notifySuccess();
}
use of git4idea.commands.GitCommandResult in project intellij-community by JetBrains.
the class GitPushOperation method doPush.
@NotNull
private ResultWithOutput doPush(@NotNull GitRepository repository, @NotNull PushSpec<GitPushSource, GitPushTarget> pushSpec) {
GitPushTarget target = pushSpec.getTarget();
GitLocalBranch sourceBranch = pushSpec.getSource().getBranch();
GitRemoteBranch targetBranch = target.getBranch();
GitLineHandlerListener progressListener = GitStandardProgressAnalyzer.createListener(myProgressIndicator);
boolean setUpstream = pushSpec.getTarget().isNewBranchCreated() && !branchTrackingInfoIsSet(repository, sourceBranch);
String tagMode = myTagMode == null ? null : myTagMode.getArgument();
String spec = sourceBranch.getFullName() + ":" + targetBranch.getNameForRemoteOperations();
GitCommandResult res = myGit.push(repository, targetBranch.getRemote(), spec, myForce, setUpstream, tagMode, progressListener);
return new ResultWithOutput(res);
}
use of git4idea.commands.GitCommandResult 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);
}
}
use of git4idea.commands.GitCommandResult in project git-machete-intellij-plugin by VirtusLab.
the class BaseResetBranchToRemoteAction method doResetCurrentBranchToRemoteWithKeep.
protected void doResetCurrentBranchToRemoteWithKeep(Project project, GitRepository gitRepository, ILocalBranchReference localBranch, IRemoteTrackingBranchReference remoteTrackingBranch) {
new Task.Backgroundable(project, getString("action.GitMachete.BaseResetBranchToRemoteAction.task-title"), /* canBeCancelled */
true) {
@Override
@UIThreadUnsafe
public void run(ProgressIndicator indicator) {
val localBranchName = localBranch.getName();
val remoteTrackingBranchName = remoteTrackingBranch.getName();
log().debug(() -> "Resetting '${localBranchName}' to '${remoteTrackingBranchName}'");
try (AccessToken ignored = DvcsUtil.workingTreeChangeStarted(project, getString("action.GitMachete.BaseResetBranchToRemoteAction.task-title"))) {
GitLineHandler resetHandler = new GitLineHandler(project, gitRepository.getRoot(), GitCommand.RESET);
resetHandler.addParameters("--keep");
resetHandler.addParameters(remoteTrackingBranchName);
resetHandler.endOptions();
val localChangesDetector = new GitLocalChangesWouldBeOverwrittenDetector(gitRepository.getRoot(), RESET);
resetHandler.addLineListener(localChangesDetector);
GitCommandResult result = Git.getInstance().runCommand(resetHandler);
if (result.success()) {
IntelliJNotificationCompat.notifySuccess(project, /* title */
"", format(getString("action.GitMachete.BaseResetBranchToRemoteAction.notification.title.reset-success"), localBranchName));
log().debug(() -> "Branch '${localBranchName}' has been reset to '${remoteTrackingBranchName}");
} else if (localChangesDetector.wasMessageDetected()) {
localChangesWouldBeOverwrittenHelper_showErrorNotification(project, gitRepository.getRoot(), /* operationName */
"Reset", localChangesDetector.getRelativeFilePaths());
} else {
log().error(result.getErrorOutputAsJoinedString());
IntelliJNotificationCompat.notifyError(project, VCS_NOTIFIER_TITLE, result.getErrorOutputAsHtmlString());
}
val repositoryRoot = getMainDirectory(gitRepository);
GitRepositoryManager.getInstance(project).updateRepository(repositoryRoot);
VfsUtil.markDirtyAndRefresh(/* async */
false, /* recursive */
true, /* reloadChildren */
false, repositoryRoot);
}
}
}.queue();
}
Aggregations