summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaša Živkov <zivkov@gmail.com>2015-04-16 12:34:55 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-04-16 12:34:56 +0000
commitc34ad4736a51983ce3b3e571e50840f87c8f7b8d (patch)
tree3bac9bae6397366052a8806228b3819dbb87f929
parent684adc3a804da2221d0461d0ae82e62c9f7a2889 (diff)
parentabd8a203bd80651523980d099b4414cde3fd6e32 (diff)
Merge "Check reachability from R_HEADS/R_TAGS/REFS_CONFIG when creating branches" into stable-2.10
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java16
1 files changed, 13 insertions, 3 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java
index 3dcf9f43c3..4a3b415417 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java
@@ -14,8 +14,7 @@
package com.google.gerrit.server.project;
-import static org.eclipse.jgit.lib.RefDatabase.ALL;
-
+import com.google.common.collect.Iterables;
import com.google.gerrit.common.ChangeHooks;
import com.google.gerrit.common.errors.InvalidRevisionException;
import com.google.gerrit.extensions.restapi.AuthException;
@@ -25,6 +24,7 @@ import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.RestModifyView;
import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
import com.google.gerrit.server.git.GitRepositoryManager;
@@ -41,6 +41,7 @@ import org.eclipse.jgit.errors.RevisionSyntaxException;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
+import org.eclipse.jgit.lib.RefDatabase;
import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.ObjectWalk;
@@ -50,6 +51,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.util.Collections;
public class CreateBranch implements RestModifyView<ProjectResource, Input> {
private static final Logger log = LoggerFactory.getLogger(CreateBranch.class);
@@ -214,7 +216,15 @@ public class CreateBranch implements RestModifyView<ProjectResource, Input> {
} catch (IncorrectObjectTypeException err) {
throw new InvalidRevisionException();
}
- for (final Ref r : repo.getRefDatabase().getRefs(ALL).values()) {
+ RefDatabase refDb = repo.getRefDatabase();
+ Iterable<Ref> refs = Iterables.concat(
+ refDb.getRefs(Constants.R_HEADS).values(),
+ refDb.getRefs(Constants.R_TAGS).values());
+ Ref rc = refDb.getRef(RefNames.REFS_CONFIG);
+ if (rc != null) {
+ refs = Iterables.concat(refs, Collections.singleton(rc));
+ }
+ for (Ref r : refs) {
try {
rw.markUninteresting(rw.parseAny(r.getObjectId()));
} catch (MissingObjectException err) {