mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
refactoring: unnecessary old HgPusher removed
This commit is contained in:
@@ -1,90 +0,0 @@
|
||||
/*
|
||||
* Copyright 2000-2011 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.zmlx.hg4idea;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vcs.VcsNotifier;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.zmlx.hg4idea.action.HgCommandResultNotifier;
|
||||
import org.zmlx.hg4idea.command.HgPushCommand;
|
||||
import org.zmlx.hg4idea.execution.HgCommandResult;
|
||||
import org.zmlx.hg4idea.execution.HgCommandResultHandler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class HgPusher {
|
||||
|
||||
private static final Logger LOG = Logger.getInstance(HgPusher.class);
|
||||
private static final String ONE = "one";
|
||||
private static Pattern PUSH_COMMITS_PATTERN = Pattern.compile(".*(?:added|pushed) (\\d+|" + ONE + ") changeset.*");
|
||||
// hg push command has definite exit values for some cases:
|
||||
// mercurial returns 0 if push was successful, 1 if nothing to push. see hg push --help
|
||||
private static int PUSH_SUCCEEDED_EXIT_VALUE = 0;
|
||||
private static int NOTHING_TO_PUSH_EXIT_VALUE = 1;
|
||||
|
||||
public static void push(final Project project, HgPushCommand command) {
|
||||
final VirtualFile repo = command.getRepo();
|
||||
command.execute(new HgCommandResultHandler() {
|
||||
@Override
|
||||
public void process(@Nullable HgCommandResult result) {
|
||||
if (result == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (result.getExitValue() == PUSH_SUCCEEDED_EXIT_VALUE) {
|
||||
int commitsNum = getNumberOfPushedCommits(result);
|
||||
String successTitle = "Pushed successfully";
|
||||
String successDescription = String.format("Pushed %d %s [%s]", commitsNum, StringUtil.pluralize("commit", commitsNum),
|
||||
repo.getPresentableName());
|
||||
VcsNotifier.getInstance(project).notifySuccess(successTitle, successDescription);
|
||||
}
|
||||
else if (result.getExitValue() == NOTHING_TO_PUSH_EXIT_VALUE) {
|
||||
VcsNotifier.getInstance(project).notifySuccess("Nothing to push");
|
||||
}
|
||||
else {
|
||||
new HgCommandResultNotifier(project).notifyError(result, "Push failed",
|
||||
"Failed to push to [" + repo.getPresentableName() + "]");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static int getNumberOfPushedCommits(@NotNull HgCommandResult result) {
|
||||
int numberOfCommitsInAllSubrepos = 0;
|
||||
final List<String> outputLines = result.getOutputLines();
|
||||
for (String outputLine : outputLines) {
|
||||
outputLine = outputLine.trim();
|
||||
final Matcher matcher = PUSH_COMMITS_PATTERN.matcher(outputLine);
|
||||
if (matcher.matches()) {
|
||||
try {
|
||||
String numberOfCommits = matcher.group(1);
|
||||
numberOfCommitsInAllSubrepos += ONE.equals(numberOfCommits) ? 1 : Integer.parseInt(numberOfCommits);
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
LOG.error("getNumberOfPushedCommits ", e);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return numberOfCommitsInAllSubrepos;
|
||||
}
|
||||
}
|
||||
@@ -19,16 +19,34 @@ import com.intellij.dvcs.push.PushSpec;
|
||||
import com.intellij.dvcs.push.Pusher;
|
||||
import com.intellij.dvcs.push.VcsPushOptionValue;
|
||||
import com.intellij.dvcs.repo.Repository;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vcs.VcsNotifier;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.zmlx.hg4idea.action.HgCommandResultNotifier;
|
||||
import org.zmlx.hg4idea.command.HgPushCommand;
|
||||
import org.zmlx.hg4idea.execution.HgCommandResult;
|
||||
import org.zmlx.hg4idea.execution.HgCommandResultHandler;
|
||||
import org.zmlx.hg4idea.repo.HgRepository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class HgPusher extends Pusher {
|
||||
|
||||
private static final Logger LOG = Logger.getInstance(HgPusher.class);
|
||||
private static final String ONE = "one";
|
||||
private static Pattern PUSH_COMMITS_PATTERN = Pattern.compile(".*(?:added|pushed) (\\d+|" + ONE + ") changeset.*");
|
||||
// hg push command has definite exit values for some cases:
|
||||
// mercurial returns 0 if push was successful, 1 if nothing to push. see hg push --help
|
||||
private static int PUSH_SUCCEEDED_EXIT_VALUE = 0;
|
||||
private static int NOTHING_TO_PUSH_EXIT_VALUE = 1;
|
||||
|
||||
@Override
|
||||
public void push(@NotNull Map<Repository, PushSpec> pushSpecs, @Nullable VcsPushOptionValue vcsPushOptionValue, boolean force) {
|
||||
for (Map.Entry<Repository, PushSpec> entry : pushSpecs.entrySet()) {
|
||||
@@ -55,7 +73,54 @@ public class HgPusher extends Pusher {
|
||||
else {
|
||||
pushCommand.setBranchName(source.mySource);
|
||||
}
|
||||
org.zmlx.hg4idea.HgPusher.push(project, pushCommand);
|
||||
push(project, pushCommand);
|
||||
}
|
||||
}
|
||||
|
||||
public static void push(@NotNull final Project project, @NotNull HgPushCommand command) {
|
||||
final VirtualFile repo = command.getRepo();
|
||||
command.execute(new HgCommandResultHandler() {
|
||||
@Override
|
||||
public void process(@Nullable HgCommandResult result) {
|
||||
if (result == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (result.getExitValue() == PUSH_SUCCEEDED_EXIT_VALUE) {
|
||||
int commitsNum = getNumberOfPushedCommits(result);
|
||||
String successTitle = "Pushed successfully";
|
||||
String successDescription = String.format("Pushed %d %s [%s]", commitsNum, StringUtil.pluralize("commit", commitsNum),
|
||||
repo.getPresentableName());
|
||||
VcsNotifier.getInstance(project).notifySuccess(successTitle, successDescription);
|
||||
}
|
||||
else if (result.getExitValue() == NOTHING_TO_PUSH_EXIT_VALUE) {
|
||||
VcsNotifier.getInstance(project).notifySuccess("Nothing to push");
|
||||
}
|
||||
else {
|
||||
new HgCommandResultNotifier(project).notifyError(result, "Push failed",
|
||||
"Failed to push to [" + repo.getPresentableName() + "]");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static int getNumberOfPushedCommits(@NotNull HgCommandResult result) {
|
||||
int numberOfCommitsInAllSubrepos = 0;
|
||||
final List<String> outputLines = result.getOutputLines();
|
||||
for (String outputLine : outputLines) {
|
||||
outputLine = outputLine.trim();
|
||||
final Matcher matcher = PUSH_COMMITS_PATTERN.matcher(outputLine);
|
||||
if (matcher.matches()) {
|
||||
try {
|
||||
String numberOfCommits = matcher.group(1);
|
||||
numberOfCommitsInAllSubrepos += ONE.equals(numberOfCommits) ? 1 : Integer.parseInt(numberOfCommits);
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
LOG.error("getNumberOfPushedCommits ", e);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return numberOfCommitsInAllSubrepos;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user