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

[PATCH] git-config: handle --file option with relative pathname properly

From
Gerrit Pape <pape@smarden.org>
Date
Oct 9, 2007, 12:49 UTC
Message-ID
<20071009124932.1184.qmail@395d4a80f3eafd.315fe32.mid.smarden.org>

When calling git-config not from the top level directory of a repository, it changes directory before trying to open the config file specified through the --file option, which then fails if the config file was specified by a relative pathname. This patch adjusts the pathname to the config file if applicable.

The problem was noticed by Joey Hess, reported through
 http://bugs.debian.org/445208
Signed-off-by: Gerrit Pape <pape@smarden.org>
---
 builtin-config.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/builtin-config.c b/builtin-config.c
index 0a605e0..c2708ba 100644
--- a/builtin-config.c
+++ b/builtin-config.c
@@ -165,7 +165,7 @@ int cmd_config(int argc, const char **argv, const char *prefix)
 {
 	int nongit = 0;
 	char* value;
-	setup_git_directory_gently(&nongit);
+	const char *name = setup_git_directory_gently(&nongit);
 
 	while (1 < argc) {
 		if (!strcmp(argv[1], "--int"))
@@ -189,7 +189,11 @@ int cmd_config(int argc, const char **argv, const char *prefix)
 		else if (!strcmp(argv[1], "--file") || !strcmp(argv[1], "-f")) {
 			if (argc < 3)
 				usage(git_config_set_usage);
-			setenv(CONFIG_ENVIRONMENT, argv[2], 1);
+			if (argv[2][0] == '/')
+				name = argv[2];
+			else
+				name = name ? prefix_filename(name, strlen(name), argv[2]) : argv[2];
+			setenv(CONFIG_ENVIRONMENT, name, 1);
 			argc--;
 			argv++;
 		}
-- 
1.5.3.4
Next: Johannes Schindelin
Message 1 of 5 in “git-config: handle --file option with relative pathname properly”
  1. git-config: handle --file option with relative pathname properlyGerrit Pape, Oct 9, 2007
  2. Johannes SchindelinOct 9, 2007
  3. Johannes SixtOct 9, 2007
  4. git-config: handle --file option with relative pathname properlyGerrit Pape, Oct 12, 2007
  5. Johannes SchindelinOct 12, 2007

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.