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

[PATCH 5/9] vscode: only overwrite C/C++ settings

From
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
Date
Jul 23, 2018, 13:52 UTC
Message-ID
<06dcf6d974b67afcd599daa79b5820160ac42ed2.1532353966.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.2.git.gitgitgadget@gmail.com>
From: Johannes Schindelin <johannes.schindelin@gmx.de>

The C/C++ settings are special, as they are the only generated VS Code configurations that *will* change over the course of Git's development, e.g. when a new constant is defined.

Therefore, let's only update the C/C++ settings, also to prevent user modifications from being overwritten.

Ideally, we would keep user modifications in the C/C++ settings, but that would require parsing JSON, a task for which a Unix shell script is distinctly unsuited. So we write out .new files instead, and warn the user if they may want to reconcile their changes.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 contrib/vscode/init.sh | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/contrib/vscode/init.sh b/contrib/vscode/init.sh
index 494a51ac5..ba9469226 100755
--- a/contrib/vscode/init.sh
+++ b/contrib/vscode/init.sh
@@ -13,7 +13,7 @@ die "Could not create .vscode/"
 
 # General settings
 
-cat >.vscode/settings.json <<\EOF ||
+cat >.vscode/settings.json.new <<\EOF ||
 {
     "C_Cpp.intelliSenseEngine": "Default",
     "C_Cpp.intelliSenseEngineFallback": "Disabled",
@@ -51,7 +51,7 @@ esac
 
 # Default build task
 
-cat >.vscode/tasks.json <<EOF ||
+cat >.vscode/tasks.json.new <<EOF ||
 {
     // See https://go.microsoft.com/fwlink/?LinkId=733558
     // for the documentation about the tasks.json format
@@ -73,7 +73,7 @@ die "Could not install default build task"
 
 # Debugger settings
 
-cat >.vscode/launch.json <<EOF ||
+cat >.vscode/launch.json.new <<EOF ||
 {
     // Use IntelliSense to learn about possible attributes.
     // Hover to view descriptions of existing attributes.
@@ -175,3 +175,20 @@ vscode-init:
 	echo '}'
 EOF
 die "Could not write settings for the C/C++ extension"
+
+for file in .vscode/settings.json .vscode/tasks.json .vscode/launch.json
+do
+	if test -f $file
+	then
+		if git diff --no-index --quiet --exit-code $file $file.new
+		then
+			rm $file.new
+		else
+			printf "The file $file.new has these changes:\n\n"
+			git --no-pager diff --no-index $file $file.new
+			printf "\n\nMaybe \`mv $file.new $file\`?\n\n"
+		fi
+	else
+		mv $file.new $file
+	fi
+done
-- 
gitgitgadget
Previous: Johannes Schindelin via GitGitGadgetNext: Johannes Schindelin via GitGitGadget
Message 13 of 29 in “Add support to develop Git in Visual Studio Code”
  1. 0/9 Add support to develop Git in Visual Studio CodeJohannes Schindelin via GitGitGadget, Jul 23, 2018
  2. 1/9 contrib: add a script to initialize VS Code configurationJohannes Schindelin via GitGitGadget, Jul 23, 2018
  3. Jonathan NiederJul 23, 2018
  4. Johannes SchindelinJul 30, 2018
  5. Junio C HamanoJul 23, 2018
  6. Junio C HamanoJul 23, 2018
  7. Johannes SchindelinJul 30, 2018
  8. 2/9 vscode: hard-code a couple definesJohannes Schindelin via GitGitGadget, Jul 23, 2018
  9. Jonathan NiederJul 23, 2018
  10. Johannes SchindelinJul 30, 2018
  11. 3/9 cache.h: extract enum declaration from inside a struct declarationJohannes Schindelin via GitGitGadget, Jul 23, 2018
  12. 4/9 mingw: define WIN32 explicitlyJohannes Schindelin via GitGitGadget, Jul 23, 2018
  13. 5/9 vscode: only overwrite C/C++ settingsJohannes Schindelin via GitGitGadget, Jul 23, 2018
  14. 6/9 vscode: wrap commit messages at column 72 by defaultJohannes Schindelin via GitGitGadget, Jul 23, 2018
  15. 8/9 vscode: add a dictionary for cSpellJohannes Schindelin via GitGitGadget, Jul 23, 2018
  16. 9/9 vscode: let cSpell work on commit messages, tooJohannes Schindelin via GitGitGadget, Jul 23, 2018
  17. 7/9 vscode: use 8-space tabs, no trailing ws, etc for Git's source codeJohannes Schindelin via GitGitGadget, Jul 23, 2018
  18. Johannes SixtJul 25, 2018
  19. Johannes SchindelinJul 30, 2018
  20. 0/9 Add support to develop Git in Visual Studio CodeJohannes Schindelin via GitGitGadget, Jul 30, 2018
  21. 2/9 vscode: hard-code a couple definesJohannes Schindelin via GitGitGadget, Jul 30, 2018
  22. 3/9 cache.h: extract enum declaration from inside a struct declarationJohannes Schindelin via GitGitGadget, Jul 30, 2018
  23. 1/9 contrib: add a script to initialize VS Code configurationJohannes Schindelin via GitGitGadget, Jul 30, 2018
  24. 5/9 vscode: only overwrite C/C++ settingsJohannes Schindelin via GitGitGadget, Jul 30, 2018
  25. 6/9 vscode: wrap commit messages at column 72 by defaultJohannes Schindelin via GitGitGadget, Jul 30, 2018
  26. 4/9 mingw: define WIN32 explicitlyJohannes Schindelin via GitGitGadget, Jul 30, 2018
  27. 7/9 vscode: use 8-space tabs, no trailing ws, etc for Git's source codeJohannes Schindelin via GitGitGadget, Jul 30, 2018
  28. 8/9 vscode: add a dictionary for cSpellJohannes Schindelin via GitGitGadget, Jul 30, 2018
  29. 9/9 vscode: let cSpell work on commit messages, tooJohannes Schindelin via GitGitGadget, Jul 30, 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.