Repository.normalizeBranchName("Bug 1#$ 2345 - Hello World")
.equals("Bug_12345-Hello_World"));
}
+
+ @Test
+ public void testNormalizeAlreadyValidRefName() {
+ assertEquals(true,
+ Repository.normalizeBranchName("refs/heads/m.a.s.t.e.r")
+ .equals("refs/heads/m.a.s.t.e.r"));
+ }
+
+ @Test
+ public void testNormalizeTrimmedUnicodeAlreadyValidRefName() {
+ assertEquals(true,
+ Repository.normalizeBranchName(" \u00e5ngstr\u00f6m\t")
+ .equals("\u00e5ngstr\u00f6m"));
+ }
}
* Future implementations of this method could be more restrictive or more
* lenient about the validity of specific characters in the returned name.
* <p/>
- * The current implementation returns a trimmed string only containing word
- * characters ([a-zA-Z_0-9]) and hyphens ('-'). Colons are replaced by
- * hyphens. Repeating underscores and hyphens are replaced by a single
- * occurrence. Underscores and hyphens at the beginning of the string are
- * removed.
+ * The current implementation returns the trimmed input string if this is
+ * already a valid branch name. Otherwise it returns a trimmed string only
+ * containing word characters ([a-zA-Z_0-9]) and hyphens ('-'). Colons are
+ * replaced by hyphens. Repeating underscores and hyphens are replaced by a
+ * single occurrence. Underscores and hyphens at the beginning of the string
+ * are removed.
*
* @param name
* The name to normalize.
return name;
}
String result = name.trim();
+ String fullName = result.startsWith(Constants.R_HEADS) ? result
+ : Constants.R_HEADS + result;
+ if (isValidRefName(fullName)) {
+ return result;
+ }
return result.replaceAll("\\s+([_:-])*?\\s+", "$1") //$NON-NLS-1$//$NON-NLS-2$
.replaceAll(":", "-") //$NON-NLS-1$//$NON-NLS-2$
.replaceAll("\\s+", "_") //$NON-NLS-1$//$NON-NLS-2$