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

update-ref logs: problem with committer info?

From
Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Date
Aug 4, 2006, 21:01 UTC
Message-ID
<000501c6b809$2b18cd60$c47eedc1@ramsay1.demon.co.uk>
Hi all,

As a follow-up to the previous (two) email, this concerns the ability to override the committer info from the config file. As before, this depends on the relative call sites of setup_ident() and git_config().

In particular, the call to setup_ident(), from log_ref_write(), which in turn is called from write_ref_sha1() in file refs.c. Here, the call to setup_ident() seems to me to be misplaced and to almost guarantee that it will over-write the values set by an earlier call to git_config(). It is possible, I suppose, that there has been no previous call to git_config(); just not very likely, and even if that were so, then it should be the responsibility of the *callers* of write_ref_sha1() to ensure this happens.

Indeed, tracing the callers of write_ref_sha1(), we find cmd_update_ref() in builtin-update-ref.c and pull() in fetch.c. Adding a call to setup_ident() in cmd_update_ref() takes care of that route. The callers of pull() are to be found in http-fetch.c, local-fetch.c and ssh-fetch.c. Adding calls to setup_ident() in these callers is equally simple, so it only remains to remove the call from refs.c.

Now, as in the previous email, I can't compile http-fetch.c or test the result. (Yes, I could test a local fetch, but I'm feeling lazy!) In addition, I feel that somebody who knows the code better than I should take a look.

comments?
Ramsay
diff --git a/builtin-update-ref.c b/builtin-update-ref.c
index 00333c7..83094ab 100644
--- a/builtin-update-ref.c
+++ b/builtin-update-ref.c
@@ -12,6 +12,7 @@ int cmd_update_ref(int argc, const char 
 	unsigned char sha1[20], oldsha1[20];
 	int i;
 
+	setup_ident();
 	setup_git_directory();
 	git_config(git_default_config);
 
diff --git a/http-fetch.c b/http-fetch.c
index 44eba5f..fe3a4fd 100644
--- a/http-fetch.c
+++ b/http-fetch.c
@@ -1222,6 +1222,7 @@ int main(int argc, char **argv)
 	int arg = 1;
 	int rc = 0;
 
+	setup_ident();
 	setup_git_directory();
 	git_config(git_default_config);
 
diff --git a/local-fetch.c b/local-fetch.c
index ffa4887..d059a51 100644
--- a/local-fetch.c
+++ b/local-fetch.c
@@ -207,6 +207,7 @@ int main(int argc, char **argv)
 	char *commit_id;
 	int arg = 1;
 
+	setup_ident();
 	setup_git_directory();
 	git_config(git_default_config);
 
diff --git a/refs.c b/refs.c
index 713ca46..a4060d8 100644
--- a/refs.c
+++ b/refs.c
@@ -379,7 +379,6 @@ static int log_ref_write(struct ref_lock
 			lock->log_file, strerror(errno));
 	}
 
-	setup_ident();
 	comitter = git_committer_info(1);
 	if (msg) {
 		maxlen = strlen(comitter) + strlen(msg) + 2*40 + 5;
diff --git a/ssh-fetch.c b/ssh-fetch.c
index 1e59cd2..a42d17e 100644
--- a/ssh-fetch.c
+++ b/ssh-fetch.c
@@ -131,6 +131,7 @@ int main(int argc, char **argv)
 	prog = getenv("GIT_SSH_PUSH");
 	if (!prog) prog = "git-ssh-upload";
 
+	setup_ident();
 	setup_git_directory();
 	git_config(git_default_config);
 
Next: Shawn Pearce
Message 1 of 5 in “update-ref logs: problem with committer info?”
  1. Ramsay JonesAug 4, 2006
  2. Shawn PearceAug 5, 2006
  3. Ramsay JonesAug 5, 2006
  4. Shawn PearceAug 5, 2006
  5. Robin RosenbergAug 5, 2006

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.