From 00db4ab06ea5411732ca77cebc823d90cc59e372 Mon Sep 17 00:00:00 2001 From: Marco Miller Date: Fri, 6 May 2016 16:19:42 -0400 Subject: [PATCH] Fix config value get to return last instead of 1st just like git Before this fix, getting the value of 'key' below used to return value1. This fix makes it so that value3 gets returned instead, just like native git's get. [section] key = value1 key = value2 key = value3 Change-Id: Iccb24de9b63c3ad8646c909494ca3f8c9ed6e29c Signed-off-by: Marco Miller Signed-off-by: Matthias Sohn --- .../tst/org/eclipse/jgit/lib/ConfigTest.java | 6 ++++++ org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) 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 6238a354d..6c6100e11 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 @@ -739,6 +739,12 @@ public class ConfigTest { c.getStringList("a", null, "x")); } + @Test + public void testReadMultipleValuesForName() throws ConfigInvalidException { + Config c = parse("[foo]\nbar=false\nbar=true\n"); + assertTrue(c.getBoolean("foo", "bar", false)); + } + private static void assertReadLong(long exp) throws ConfigInvalidException { assertReadLong(exp, String.valueOf(exp)); } 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 567e31642..70c3997d5 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java @@ -633,12 +633,13 @@ public class Config { private String getRawString(final String section, final String subsection, final String name) { String[] lst = getRawStringList(section, subsection, name); - if (lst != null) - return lst[0]; - else if (baseConfig != null) + if (lst != null) { + return lst[lst.length - 1]; + } else if (baseConfig != null) { return baseConfig.getRawString(section, subsection, name); - else + } else { return null; + } } private String[] getRawStringList(String section, String subsection,