RefNames#fullName: Don't prepend "refs/heads/" for HEAD
In I5d9864d7, the need of 'correcting code' for branch refs was reduced
but a bug was introduced.
'refs/heads' would get prepended onto 'HEAD' since the string did not
start with 'refs/'. This resulted in an invalid URL when clicking the
gitweb link in the branches page.
Bug: Issue 4238
Change-Id: Ic27e1306bef04e225a2b349b180878ffec21b312
diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/RefNames.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/RefNames.java
index 5d2a1fd..0940a7f 100644
--- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/RefNames.java
+++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/RefNames.java
@@ -17,6 +17,8 @@
/** Constants and utilities for Gerrit-specific ref names. */
public class RefNames {
+ public static final String HEAD = "HEAD";
+
public static final String REFS = "refs/";
public static final String REFS_HEADS = "refs/heads/";
@@ -60,7 +62,8 @@
public static final String EDIT_PREFIX = "edit-";
public static String fullName(String ref) {
- return ref.startsWith(REFS) ? ref : REFS_HEADS + ref;
+ return (ref.startsWith(REFS) || ref.equals(HEAD)) ?
+ ref : REFS_HEADS + ref;
}
public static final String shortName(String ref) {
diff --git a/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/RefNamesTest.java b/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/RefNamesTest.java
index b0981a7..bd8b8e0 100644
--- a/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/RefNamesTest.java
+++ b/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/RefNamesTest.java
@@ -29,6 +29,7 @@
assertThat(RefNames.fullName("refs/heads/master")).isEqualTo("refs/heads/master");
assertThat(RefNames.fullName("master")).isEqualTo("refs/heads/master");
assertThat(RefNames.fullName("refs/tags/v1.0")).isEqualTo("refs/tags/v1.0");
+ assertThat(RefNames.fullName("HEAD")).isEqualTo("HEAD");
}
@Test