git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] git-config: document accidental multi-line setting in deprecated syntax

From
Stefan Beller <sbeller@google.com>
Date
Aug 8, 2018, 19:50 UTC
Message-ID
<20180808195020.37374-4-sbeller@google.com>
In-Reply-To
<20180808195020.37374-1-sbeller@google.com>

The bug was noticed when writing the previous patch; a fix for this bug is not easy though: If we choose to ignore the case of the subsection (and revert most of the code of the previous patch, just keeping s/strncasecmp/strcmp/), then we'd introduce new sections using the new syntax, such that

 --------
   [section.subsection]
     key = value1
 --------
  git config section.Subsection.key value2
would result in
 --------
   [section.subsection]
     key = value1
   [section.Subsection]
     key = value2
 --------

which is even more confusing. A proper fix would replace the first occurrence of 'key'. As the syntax is deprecated, let's prefer to not spend time on fixing the behavior and just document it instead.

Signed-off-by: Stefan Beller <sbeller@google.com>
---
 Documentation/git-config.txt | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt
index 14da5fc157e..1ac2eab9482 100644
--- a/Documentation/git-config.txt
+++ b/Documentation/git-config.txt
@@ -430,6 +430,27 @@ http.sslverify false
 
 include::config.txt[]
 
+BUGS
+----
+When using the deprecated `[section.subsection]` syntax, changing a value
+will result in adding a multi-line key instead of a change, if the subsection
+is given with at least one uppercase character. For example when the config
+looks like
+
+--------
+  [section.subsection]
+    key = value1
+--------
+
+and running `git config section.Subsection.key value2` will result in
+
+--------
+  [section.subsection]
+    key = value1
+    key = value2
+--------
+
+
 GIT
 ---
 Part of the linkgit:git[1] suite
-- 
2.18.0.597.ga71716f1ad-goog
Previous: Stefan BellerNext: Junio C Hamano
Message 4 of 5 in “Resending sb/config-write-fix”
  1. 0/3 Resending sb/config-write-fixStefan Beller, Aug 8, 2018
  2. 1/3 t1300: document current behavior of setting optionsStefan Beller, Aug 8, 2018
  3. 2/3 config: fix case sensitive subsection names on writingStefan Beller, Aug 8, 2018
  4. 3/3 git-config: document accidental multi-line setting in deprecated syntaxStefan Beller, Aug 8, 2018
  5. Junio C HamanoAug 8, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.