diff options
author | Saša Živkov <zivkov@gmail.com> | 2015-04-16 12:34:55 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-04-16 12:34:56 +0000 |
commit | c34ad4736a51983ce3b3e571e50840f87c8f7b8d (patch) | |
tree | 3bac9bae6397366052a8806228b3819dbb87f929 | |
parent | 684adc3a804da2221d0461d0ae82e62c9f7a2889 (diff) | |
parent | abd8a203bd80651523980d099b4414cde3fd6e32 (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.java | 16 |
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) { |