Branch normalizer should not normalize already valid branch names
Change-Id: Ib746655e32a37c4ad323f1d12ac0817de8fa56cf Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
parent
d4bd09b78d
commit
f8d232213c
|
@ -329,4 +329,18 @@ public void testNormalizeBranchName() {
|
|||
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"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1898,11 +1898,12 @@ public void autoGC(ProgressMonitor monitor) {
|
|||
* 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.
|
||||
|
@ -1916,6 +1917,11 @@ public static String normalizeBranchName(String name) {
|
|||
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$
|
||||
|
|
Loading…
Reference in New Issue