From 912ef3da19c7bc1975805e1e3e9746baf479c2be Mon Sep 17 00:00:00 2001 From: Shawn Pearce Date: Fri, 11 Jan 2013 14:42:35 -0800 Subject: [PATCH] Accept '-' instead of space in enum config values 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 --- .../tst/org/eclipse/jgit/lib/ConfigTest.java | 2 +- org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java index 9197e2922..925976d30 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java @@ -290,7 +290,7 @@ public void testGetEnum() throws ConfigInvalidException { 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)); } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java index 5f58ece18..f882d49ed 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java @@ -388,6 +388,12 @@ public > T getEnum(final T[] all, final String section, 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) {