From e12c6b58ee0284cbdf34bf325deb561a52d10340 Mon Sep 17 00:00:00 2001 From: Thomas Wolf Date: Sat, 27 Jan 2018 16:06:15 +0100 Subject: Minor improvements in git config file inclusions * Section and key names in git config files are case-insensitive. * If an include directive is invalid, include the line in the exception message. * If inclusion of the included file fails, put the file name into the exception message so that the user knows in which file the problem is. Change-Id: If920943af7ff93f5321b3d315dfec5222091256c Signed-off-by: Thomas Wolf --- .../src/org/eclipse/jgit/internal/JGitText.java | 1 + org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java | 15 ++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'org.eclipse.jgit/src/org/eclipse') diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java index 7f91b30a91..9739672f84 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java @@ -429,6 +429,7 @@ public class JGitText extends TranslationBundle { /***/ public String invalidIntegerValue; /***/ public String invalidKey; /***/ public String invalidLineInConfigFile; + /***/ public String invalidLineInConfigFileWithParam; /***/ public String invalidModeFor; /***/ public String invalidModeForPath; /***/ public String invalidObject; 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 a6313f0cc5..4d558c9fc2 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java @@ -1125,7 +1125,7 @@ public class Config { } else e.value = readValue(in); - if (e.section.equals("include")) { //$NON-NLS-1$ + if (e.section.equalsIgnoreCase("include")) { //$NON-NLS-1$ addIncludedConfig(newEntries, e, depth); } } else @@ -1154,10 +1154,10 @@ public class Config { private void addIncludedConfig(final List newEntries, ConfigLine line, int depth) throws ConfigInvalidException { - if (!line.name.equals("path") || //$NON-NLS-1$ + if (!line.name.equalsIgnoreCase("path") || //$NON-NLS-1$ line.value == null || line.value.equals(MAGIC_EMPTY_VALUE)) { - throw new ConfigInvalidException( - JGitText.get().invalidLineInConfigFile); + throw new ConfigInvalidException(MessageFormat.format( + JGitText.get().invalidLineInConfigFileWithParam, line)); } byte[] bytes = readIncludedConfig(line.value); if (bytes == null) { @@ -1171,7 +1171,12 @@ public class Config { } else { decoded = RawParseUtils.decode(bytes); } - newEntries.addAll(fromTextRecurse(decoded, depth + 1)); + try { + newEntries.addAll(fromTextRecurse(decoded, depth + 1)); + } catch (ConfigInvalidException e) { + throw new ConfigInvalidException(MessageFormat + .format(JGitText.get().cannotReadFile, line.value), e); + } } private ConfigSnapshot newState() { -- cgit v1.2.3