From 31abb329b42f3bab4d683bd1c709ab55f0d29ef6 Mon Sep 17 00:00:00 2001 From: Marc Strapetz Date: Sat, 25 Aug 2018 11:33:17 +0200 Subject: [PATCH] ConfigLine.includedFrom stores source, if it was read from included file This is a base change which prepares for subsequent bugfixes. Change-Id: Iaadc93df37e45753d700be73669e68c03590adb5 Signed-off-by: Marc Strapetz --- org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java | 11 ++++++----- .../src/org/eclipse/jgit/lib/ConfigLine.java | 4 ++++ 2 files changed, 10 insertions(+), 5 deletions(-) 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 b666f21d0..6a8ff5ade 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java @@ -1060,11 +1060,11 @@ public class Config { * made to {@code this}. */ public void fromText(String text) throws ConfigInvalidException { - state.set(newState(fromTextRecurse(text, 1))); + state.set(newState(fromTextRecurse(text, 1, null))); } - private List fromTextRecurse(String text, int depth) - throws ConfigInvalidException { + private List fromTextRecurse(String text, int depth, + String includedFrom) throws ConfigInvalidException { if (depth > MAX_DEPTH) { throw new ConfigInvalidException( JGitText.get().tooManyIncludeRecursions); @@ -1073,6 +1073,7 @@ public class Config { final StringReader in = new StringReader(text); ConfigLine last = null; ConfigLine e = new ConfigLine(); + e.includedFrom = includedFrom; for (;;) { int input = in.read(); if (-1 == input) { @@ -1088,7 +1089,7 @@ public class Config { if (e.section != null) last = e; e = new ConfigLine(); - + e.includedFrom = includedFrom; } else if (e.suffix != null) { // Everything up until the end-of-line is in the suffix. e.suffix += c; @@ -1173,7 +1174,7 @@ public class Config { decoded = RawParseUtils.decode(bytes); } try { - newEntries.addAll(fromTextRecurse(decoded, depth + 1)); + newEntries.addAll(fromTextRecurse(decoded, depth + 1, line.value)); } catch (ConfigInvalidException e) { throw new ConfigInvalidException(MessageFormat .format(JGitText.get().cannotReadFile, line.value), e); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigLine.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigLine.java index 937ba925c..e623a8ceb 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigLine.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigLine.java @@ -73,6 +73,9 @@ class ConfigLine { /** The text content after entry. */ String suffix; + /** The source from which this line was included from. */ + String includedFrom; + ConfigLine forValue(String newValue) { final ConfigLine e = new ConfigLine(); e.prefix = prefix; @@ -81,6 +84,7 @@ class ConfigLine { e.name = name; e.value = newValue; e.suffix = suffix; + e.includedFrom = includedFrom; return e; }