From: Ayush Jha <kumarayushjha123@gmail.com>
To: git@vger.kernel.org
Cc: Christian Couder <christian.couder@gmail.com>,
Karthik Nayak <karthik.188@gmail.com>,
Justin Tobler <jltobler@gmail.com>,
Ayush Chandekar <ayu.chandekar@gmail.com>,
Siddharth Asthana <siddharthasthana31@gmail.com>,
Lucas Seiki Oshiro <lucasseikioshiro@gmail.com>,
Chandra Pratap <chandrapratap3519@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
Ayush Jha <kumarayushjha123@gmail.com>
Subject: [RFC GSoC PATCH] environment: move core.trustctime to repo_settings
Date: Sun, 15 Feb 2026 16:53:30 +0530 [thread overview]
Message-ID: <20260215112331.22-1-kumarayushjha123@gmail.com> (raw)
The core.trustctime configuration variable is currently stored as a global in environment.c. This prevents it from being repository-specific, which is problematic when multiple repository instances are used within the same process.
This change continues the effort to move global configuration into struct repo_settings, as discussed in
<20260208062949.596-1-kumarayushjha123@gmail.com>.
Move trust_ctime into struct repo_settings so that it is associated with a repository instance.
Add repo_settings_get_trust_ctime() to lazily read the
core.trustctime configuration value, defaulting to true.
Update statinfo.c to use the new accessor instead of the global variable.
Signed-off-by: Ayush Jha <kumarayushjha123@gmail.com>
---
environment.c | 5 -----
environment.h | 1 -
repo-settings.c | 7 +++++++
repo-settings.h | 8 ++++++++
statinfo.c | 4 ++--
5 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/environment.c b/environment.c
index 8ffbf92d50..95bd0db63c 100644
--- a/environment.c
+++ b/environment.c
@@ -41,7 +41,6 @@ static int pack_compression_seen;
static int zlib_compression_seen;
int trust_executable_bit = 1;
-int trust_ctime = 1;
int check_stat = 1;
int has_symlinks = 1;
int minimum_abbrev = 4, default_abbrev = -1;
@@ -308,10 +307,6 @@ int git_default_core_config(const char *var, const char *value,
trust_executable_bit = git_config_bool(var, value);
return 0;
}
- if (!strcmp(var, "core.trustctime")) {
- trust_ctime = git_config_bool(var, value);
- return 0;
- }
if (!strcmp(var, "core.checkstat")) {
if (!value)
return config_error_nonbool(var);
diff --git a/environment.h b/environment.h
index 27f657af04..148103ea51 100644
--- a/environment.h
+++ b/environment.h
@@ -145,7 +145,6 @@ extern char *git_work_tree_cfg;
/* Environment bits from configuration mechanism */
extern int trust_executable_bit;
-extern int trust_ctime;
extern int check_stat;
extern int has_symlinks;
extern int minimum_abbrev, default_abbrev;
diff --git a/repo-settings.c b/repo-settings.c
index 208e09ff17..bb7d983023 100644
--- a/repo-settings.c
+++ b/repo-settings.c
@@ -233,3 +233,10 @@ void repo_settings_reset_shared_repository(struct repository *repo)
{
repo->settings.shared_repository_initialized = 0;
}
+
+int repo_settings_get_trust_ctime(struct repository *repo)
+{
+ if (repo->settings.trust_ctime < 0)
+ repo_cfg_bool(repo, "core.trustctime", &repo->settings.trust_ctime, 1);
+ return repo->settings.trust_ctime;
+}
diff --git a/repo-settings.h b/repo-settings.h
index cad9c3f0cc..709f86108b 100644
--- a/repo-settings.h
+++ b/repo-settings.h
@@ -70,6 +70,8 @@ struct repo_settings {
int max_allowed_tree_depth;
char *hooks_path;
+
+ int trust_ctime;
};
#define REPO_SETTINGS_INIT { \
.shared_repository = -1, \
@@ -81,6 +83,7 @@ struct repo_settings {
.packed_git_window_size = DEFAULT_PACKED_GIT_WINDOW_SIZE, \
.packed_git_limit = DEFAULT_PACKED_GIT_LIMIT, \
.max_allowed_tree_depth = DEFAULT_MAX_ALLOWED_TREE_DEPTH, \
+ .trust_ctime = -1, \
}
void prepare_repo_settings(struct repository *r);
@@ -90,6 +93,11 @@ void repo_settings_clear(struct repository *r);
enum log_refs_config repo_settings_get_log_all_ref_updates(struct repository *repo);
/* Read the value for "core.warnAmbiguousRefs". */
int repo_settings_get_warn_ambiguous_refs(struct repository *repo);
+/* Read and set the value for "core.attributesfile". */
+const char *repo_settings_get_attributes_file(struct repository *repo);
+
+/* Read the value for "core.trustctime". */
+int repo_settings_get_trust_ctime(struct repository *repo);
/* Read the value for "core.hooksPath". */
const char *repo_settings_get_hooks_path(struct repository *repo);
diff --git a/statinfo.c b/statinfo.c
index 30a164b0e6..ebc8faef27 100644
--- a/statinfo.c
+++ b/statinfo.c
@@ -66,14 +66,14 @@ int match_stat_data(const struct stat_data *sd, struct stat *st)
if (sd->sd_mtime.sec != (unsigned int)st->st_mtime)
changed |= MTIME_CHANGED;
- if (trust_ctime && check_stat &&
+ if (repo_settings_get_trust_ctime(the_repository) && check_stat &&
sd->sd_ctime.sec != (unsigned int)st->st_ctime)
changed |= CTIME_CHANGED;
#ifdef USE_NSEC
if (check_stat && sd->sd_mtime.nsec != ST_MTIME_NSEC(*st))
changed |= MTIME_CHANGED;
- if (trust_ctime && check_stat &&
+ if (repo_settings_get_trust_ctime(the_repository) && check_stat &&
sd->sd_ctime.nsec != ST_CTIME_NSEC(*st))
changed |= CTIME_CHANGED;
#endif
--
2.53.0.windows.1
next reply other threads:[~2026-02-15 11:24 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-15 11:23 Ayush Jha [this message]
2026-02-17 19:13 ` [RFC GSoC PATCH] environment: move core.trustctime to repo_settings Junio C Hamano
2026-02-18 11:04 ` Ayush Jha
2026-02-18 11:22 ` Bello Olamide
2026-02-18 11:45 ` Ayush Jha
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260215112331.22-1-kumarayushjha123@gmail.com \
--to=kumarayushjha123@gmail.com \
--cc=ayu.chandekar@gmail.com \
--cc=chandrapratap3519@gmail.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jltobler@gmail.com \
--cc=karthik.188@gmail.com \
--cc=lucasseikioshiro@gmail.com \
--cc=siddharthasthana31@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.