Skip to content

Commit

Permalink
Add git-config-set, a simple helper for scripts to set config variables
Browse files Browse the repository at this point in the history
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>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
dscho authored and Junio C Hamano committed Nov 20, 2005
1 parent 10bea15 commit 1b1e59c
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
26 changes: 26 additions & 0 deletions config-set.c
Original file line number Diff line number Diff line change
@@ -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 comments on commit 1b1e59c

Please sign in to comment.