]> source.dussan.org Git - jgit.git/commitdiff
Accept '-' instead of space in enum config values 34/9634/2
authorShawn Pearce <spearce@spearce.org>
Fri, 11 Jan 2013 22:42:35 +0000 (14:42 -0800)
committerShawn Pearce <spearce@spearce.org>
Fri, 11 Jan 2013 22:52:13 +0000 (14:52 -0800)
This is necessary because some versions of JGit containing
the flawed c98abc9c0586c73ef7df4172644b7dd21c979e9d were
used in the wild and wrote bad configuration files. We now
must accept this value in addition to the preferred case.

Change-Id: I3ed5451735658df6381532499130e5186805024a

org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java
org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java

index 9197e292249a2223ded9c00f8f343c1319701228..925976d30081fdeb937d545df6232756d70ffafb 100644 (file)
@@ -290,7 +290,7 @@ public class ConfigTest {
                c = parse("[s \"b\"]\n\tc = one two\n");
                assertSame(TestEnum.ONE_TWO, c.getEnum("s", "b", "c", TestEnum.ONE_TWO));
 
-               c = parse("[s \"b\"]\n\tc = one two\n");
+               c = parse("[s \"b\"]\n\tc = one-two\n");
                assertSame(TestEnum.ONE_TWO, c.getEnum("s", "b", "c", TestEnum.ONE_TWO));
        }
 
index 5f58ece185406792bb89c8cad97d8d8ca53a8260..f882d49ed1b6744fe83cc13e172b852f0fc80252 100644 (file)
@@ -388,6 +388,12 @@ public class Config {
                        return defaultValue;
 
                String n = value.replace(' ', '_');
+
+               // Because of c98abc9c0586c73ef7df4172644b7dd21c979e9d being used in
+               // the real world before its breakage was fully understood, we must
+               // also accept '-' as though it were ' '.
+               n = n.replace('-', '_');
+
                T trueState = null;
                T falseState = null;
                for (T e : all) {