Skip to content

Commit

Permalink
Add --global option to git-repo-config.
Browse files Browse the repository at this point in the history
Allow user to set variables in global ~/.gitconfig file
using command line.

Signed-off-by: Sean Estabrooks <seanlkml@sympatico.ca>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Sean authored and Junio C Hamano committed Nov 3, 2006
1 parent ca8e2d8 commit 34eb334
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 15 deletions.
31 changes: 18 additions & 13 deletions Documentation/git-repo-config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@ git-repo-config(1)

NAME
----
git-repo-config - Get and set options in .git/config
git-repo-config - Get and set repository or global options.


SYNOPSIS
--------
[verse]
'git-repo-config' [type] name [value [value_regex]]
'git-repo-config' [type] --replace-all name [value [value_regex]]
'git-repo-config' [type] --get name [value_regex]
'git-repo-config' [type] --get-all name [value_regex]
'git-repo-config' [type] --unset name [value_regex]
'git-repo-config' [type] --unset-all name [value_regex]
'git-repo-config' -l | --list
'git-repo-config' [--global] [type] name [value [value_regex]]
'git-repo-config' [--global] [type] --replace-all name [value [value_regex]]
'git-repo-config' [--global] [type] --get name [value_regex]
'git-repo-config' [--global] [type] --get-all name [value_regex]
'git-repo-config' [--global] [type] --unset name [value_regex]
'git-repo-config' [--global] [type] --unset-all name [value_regex]
'git-repo-config' [--global] -l | --list

DESCRIPTION
-----------
Expand All @@ -41,8 +41,9 @@ This command will fail if:
. Can not write to .git/config,
. no section was provided,
. the section or key is invalid,
. you try to unset an option which does not exist, or
. you try to unset/set an option for which multiple lines match.
. you try to unset an option which does not exist,
. you try to unset/set an option for which multiple lines match, or
. you use --global option without $HOME being properly set.


OPTIONS
Expand All @@ -64,21 +65,25 @@ OPTIONS
--get-regexp::
Like --get-all, but interprets the name as a regular expression.

--global::
Use global ~/.gitconfig file rather than the repository .git/config.

--unset::
Remove the line matching the key from .git/config.
Remove the line matching the key from config file.

--unset-all::
Remove all matching lines from .git/config.
Remove all matching lines from config file.

-l, --list::
List all variables set in .git/config.
List all variables set in config file.


ENVIRONMENT
-----------

GIT_CONFIG::
Take the configuration from the given file instead of .git/config.
Using the "--global" option forces this to ~/.gitconfig.

GIT_CONFIG_LOCAL::
Currently the same as $GIT_CONFIG; when Git will support global
Expand Down
13 changes: 11 additions & 2 deletions builtin-repo-config.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#include <regex.h>

static const char git_config_set_usage[] =
"git-repo-config [ --bool | --int ] [--get | --get-all | --get-regexp | --replace-all | --unset | --unset-all] name [value [value_regex]] | --list";
"git-repo-config [ --global ] [ --bool | --int ] [--get | --get-all | --get-regexp | --replace-all | --unset | --unset-all] name [value [value_regex]] | --list";

static char *key;
static regex_t *key_regexp;
Expand Down Expand Up @@ -139,7 +139,16 @@ int cmd_repo_config(int argc, const char **argv, const char *prefix)
type = T_BOOL;
else if (!strcmp(argv[1], "--list") || !strcmp(argv[1], "-l"))
return git_config(show_all_config);
else
else if (!strcmp(argv[1], "--global")) {
char *home = getenv("HOME");
if (home) {
char *user_config = xstrdup(mkpath("%s/.gitconfig", home));
setenv("GIT_CONFIG", user_config, 1);
free(user_config);
} else {
die("$HOME not set");
}
} else
break;
argc--;
argv++;
Expand Down

0 comments on commit 34eb334

Please sign in to comment.