@matheusbsbs / matheus-bagliano / commits / f07d6a1ad1
Fork 0

setup: save prefix (original cwd relative to toplevel) in startup_info

Save the path from the original cwd to the cwd at the end of the setup procedure in the startup_info struct introduced in e37c1329 (2010-08-05). The value cannot vary from thread to thread anyway, since the cwd is global. So now in your builtin command, instead of passing prefix around, when you want to convert a user-supplied path to a cwd-relative path, you can use startup_info->prefix directly. Caveat: As with the return value from setup_git_directory_gently(), startup_info->prefix would be NULL when the original cwd is not a subdir of the toplevel. Longer term, this would allow the prefix to be reused when several noncooperating functions require access to the same repository (for example, when accessing configuration before running a builtin). Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Nguyễn Thái Ngọc Duy committed Dec 1, 2010 at 17:33 UTC f07d6a1ad1485bcb3078f4601943d81f915c5af6
2 files changed +4 -1
cache.h
+1
@@ -1117,6 +1117,7 @@ const char *split_cmdline_strerror(int cmdline_errno);
1117 /* git.c */
1118 struct startup_info {
1119 int have_repository;
1120 + const char *prefix;
1121 };
1122 extern struct startup_info *startup_info;
1123
setup.c
+3 -1
@@ -512,8 +512,10 @@ const char *setup_git_directory_gently(int *nongit_ok)
512 const char *prefix;
513
514 prefix = setup_git_directory_gently_1(nongit_ok);
515 - if (startup_info)
515 + if (startup_info) {
516 startup_info->have_repository = !nongit_ok || !*nongit_ok;
517 + startup_info->prefix = prefix;
518 + }
519 return prefix;
520 }
521