summaryrefslogtreecommitdiff
path: root/plugins/git4idea/src/git4idea/validators/GitNewBranchNameValidator.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/git4idea/src/git4idea/validators/GitNewBranchNameValidator.java')
-rw-r--r--plugins/git4idea/src/git4idea/validators/GitNewBranchNameValidator.java36
1 files changed, 23 insertions, 13 deletions
diff --git a/plugins/git4idea/src/git4idea/validators/GitNewBranchNameValidator.java b/plugins/git4idea/src/git4idea/validators/GitNewBranchNameValidator.java
index 69b06d04cc9b..40beb2686f84 100644
--- a/plugins/git4idea/src/git4idea/validators/GitNewBranchNameValidator.java
+++ b/plugins/git4idea/src/git4idea/validators/GitNewBranchNameValidator.java
@@ -51,7 +51,7 @@ public final class GitNewBranchNameValidator implements InputValidatorEx {
}
@Override
- public boolean checkInput(String inputString) {
+ public boolean checkInput(@NotNull String inputString) {
if (!GitRefNameValidator.getInstance().checkInput(inputString)){
myErrorText = "Invalid name for branch";
return false;
@@ -59,7 +59,7 @@ public final class GitNewBranchNameValidator implements InputValidatorEx {
return checkBranchConflict(inputString);
}
- private boolean checkBranchConflict(String inputString) {
+ private boolean checkBranchConflict(@NotNull String inputString) {
if (isNotPermitted(inputString) || conflictsWithLocalBranch(inputString) || conflictsWithRemoteBranch(inputString)) {
return false;
}
@@ -75,28 +75,38 @@ public final class GitNewBranchNameValidator implements InputValidatorEx {
return false;
}
- private boolean conflictsWithLocalBranch(String inputString) {
+ private boolean conflictsWithLocalBranch(@NotNull String inputString) {
return conflictsWithLocalOrRemote(inputString, true, " already exists");
}
- private boolean conflictsWithRemoteBranch(String inputString) {
+ private boolean conflictsWithRemoteBranch(@NotNull String inputString) {
return conflictsWithLocalOrRemote(inputString, false, " clashes with remote branch with the same name");
}
- private boolean conflictsWithLocalOrRemote(String inputString, boolean local, String message) {
+ private boolean conflictsWithLocalOrRemote(@NotNull String inputString, boolean local, @NotNull String message) {
+ int conflictsWithCurrentName = 0;
for (GitRepository repository : myRepositories) {
- GitBranchesCollection branchesCollection = repository.getBranches();
- Collection<? extends GitBranch> branches = local ? branchesCollection.getLocalBranches() : branchesCollection.getRemoteBranches();
- for (GitBranch branch : branches) {
- if (branch.getName().equals(inputString)) {
- myErrorText = "Branch name " + inputString + message;
- if (myRepositories.size() > 1 && !allReposHaveBranch(inputString, local)) {
- myErrorText += " in repository " + repository.getPresentableUrl();
+ if (inputString.equals(repository.getCurrentBranchName())) {
+ conflictsWithCurrentName++;
+ }
+ else {
+ GitBranchesCollection branchesCollection = repository.getBranches();
+ Collection<? extends GitBranch> branches = local ? branchesCollection.getLocalBranches() : branchesCollection.getRemoteBranches();
+ for (GitBranch branch : branches) {
+ if (branch.getName().equals(inputString)) {
+ myErrorText = "Branch name " + inputString + message;
+ if (myRepositories.size() > 1 && !allReposHaveBranch(inputString, local)) {
+ myErrorText += " in repository " + repository.getPresentableUrl();
+ }
+ return true;
}
- return true;
}
}
}
+ if (conflictsWithCurrentName == myRepositories.size()) {
+ myErrorText = "You are already on branch " + inputString;
+ return true;
+ }
return false;
}