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

Add git-config-set, a simple helper for scripts to set config variables

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Nov 17, 2005, 21:44 UTC
Message-ID
<Pine.LNX.4.63.0511172244230.18285@wbgn013.biozentrum.uni-wuerzburg.de>

This is meant for the end user, who cannot be expected to edit .git/config by hand.

Example:
	git-config-set core.filemode true
will set filemode in the section [core] to true,
	git-config-set --unset core.filemode
will remove the entry (failing if it is not there), and
	git-config-set --unset diff.twohead ^recar

will remove the unique entry whose value matches the regex "^recar" (failing if there is no unique such entry).

It is just a light wrapper around git_config_set() and git_config_set_multivar().

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 .gitignore   |    1 +
 Makefile     |    3 ++-
 config-set.c |   26 ++++++++++++++++++++++++++
 3 files changed, 29 insertions(+), 1 deletions(-)
 create mode 100644 config-set.c

applies-to: 8ff699dffc817e92fb2101f538f84c38d5ed0a0f acf7869a158171bf4552d0b0da64b20d48e4bf27

diff --git a/.gitignore b/.gitignore
index 0dd7b9c..d17a8b5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@ git-clone
 git-clone-pack
 git-commit
 git-commit-tree
+git-config-set
 git-convert-objects
 git-count-objects
 git-cvsexportcommit
diff --git a/Makefile b/Makefile
index ebff990..8e84e28 100644
--- a/Makefile
+++ b/Makefile
@@ -125,7 +125,8 @@ PROGRAMS = \
 	git-unpack-objects$X git-update-index$X git-update-server-info$X \
 	git-upload-pack$X git-verify-pack$X git-write-tree$X \
 	git-update-ref$X git-symbolic-ref$X git-check-ref-format$X \
-	git-name-rev$X git-pack-redundant$X git-var$X $(SIMPLE_PROGRAMS)
+	git-name-rev$X git-pack-redundant$X git-config-set$X git-var$X \
+	$(SIMPLE_PROGRAMS)
 
 # Backward compatibility -- to be removed after 1.0
 PROGRAMS += git-ssh-pull$X git-ssh-push$X
diff --git a/config-set.c b/config-set.c
new file mode 100644
index 0000000..1b1547b
--- /dev/null
+++ b/config-set.c
@@ -0,0 +1,26 @@
+#include "cache.h"
+
+static const char git_config_set_usage[] =
+"git-config-set name [value [value_regex]] | --unset name [value_regex]";
+
+int main(int argc, const char **argv)
+{
+	setup_git_directory();
+	switch (argc) {
+	case 2:
+		return git_config_set(argv[1], NULL);
+	case 3:
+		if (!strcmp(argv[1], "--unset"))
+			return git_config_set(argv[2], NULL);
+		else
+			return git_config_set(argv[1], argv[2]);
+	case 4:
+		if (!strcmp(argv[1], "--unset"))
+			return git_config_set_multivar(argv[2], NULL, argv[3]);
+		else
+			return git_config_set_multivar(argv[1], argv[2], argv[3]);
+	default:
+		usage(git_config_set_usage);
+	}
+	return 0;
+}
---
0.99.9.GIT
Next: Junio C Hamano
Message 1 of 3 in “Add git-config-set, a simple helper for scripts to set config variables”
  1. Johannes SchindelinNov 17, 2005
  2. Junio C HamanoNov 17, 2005
  3. Johannes SchindelinNov 17, 2005

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.