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

[PATCH] Make use of stat.ctime configurable

From
Alex Riesen <raa.lkml@gmail.com>
Date
Jul 26, 2008, 15:38 UTC
Message-ID
<20080726153802.GA16868@blimp.local>
In-Reply-To
<alpine.DEB.1.00.0807260256030.11976@eeepc-johanness>

because there are situations where it produces too much false positives. Like when file system crawlers keep changing it when scanning and using the ctime for marking scanned files.

The default is to allow use of ctime.
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
Johannes Schindelin, Sat, Jul 26, 2008 02:57:25 +0200:
Show 10 quoted lines
> On Fri, 25 Jul 2008, Alex Riesen wrote:
> > But, given the fact, that somewhere sometimes its very-very annoying to 
> > have even one (un)changed file, something must be done about it. Maybe 
> > just direct
> > 
> > [...]
> > 	trustctime = false
> 
> ... which is all Junio and I were asking all along: a separate way to ask 
> for ignoring ctime; not just DWIM it on top of the executable bit.
Oh...
 cache.h       |    1 +
 config.c      |    4 ++++
 environment.c |    1 +
 read-cache.c  |    2 +-
 4 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/cache.h b/cache.h
index 38985aa..00d02d3 100644
--- a/cache.h
+++ b/cache.h
@@ -421,6 +421,7 @@ extern int delete_ref(const char *, const unsigned char *sha1);
 
 /* Environment bits from configuration mechanism */
 extern int trust_executable_bit;
+extern int trust_file_ctime;
 extern int quote_path_fully;
 extern int has_symlinks;
 extern int ignore_case;
diff --git a/config.c b/config.c
index 1e066c7..860e8ab 100644
--- a/config.c
+++ b/config.c
@@ -341,6 +341,10 @@ static 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.filectime")) {
+		trust_file_ctime = git_config_bool(var, value);
+		return 0;
+	}
 
 	if (!strcmp(var, "core.quotepath")) {
 		quote_path_fully = git_config_bool(var, value);
diff --git a/environment.c b/environment.c
index 4a88a17..4982771 100644
--- a/environment.c
+++ b/environment.c
@@ -13,6 +13,7 @@ char git_default_email[MAX_GITNAME];
 char git_default_name[MAX_GITNAME];
 int user_ident_explicitly_given;
 int trust_executable_bit = 1;
+int trust_file_ctime = 1;
 int has_symlinks = 1;
 int ignore_case;
 int assume_unchanged;
diff --git a/read-cache.c b/read-cache.c
index a50a851..00d39dc 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -181,7 +181,7 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st)
 	}
 	if (ce->ce_mtime != (unsigned int) st->st_mtime)
 		changed |= MTIME_CHANGED;
-	if (ce->ce_ctime != (unsigned int) st->st_ctime)
+	if (trust_file_ctime && ce->ce_ctime != (unsigned int) st->st_ctime)
 		changed |= CTIME_CHANGED;
 
 	if (ce->ce_uid != (unsigned int) st->st_uid ||
-- 
1.6.0.rc0.76.g581e
Previous: Johannes SchindelinNext: Junio C Hamano
Message 21 of 41 in “Fix update-index --refresh for submodules if stat(2) returns st_size 0”
  1. Fix update-index --refresh for submodules if stat(2) returns st_size 0Alex Riesen, Jul 21, 2008
  2. Johannes SchindelinJul 21, 2008
  3. Alex RiesenJul 21, 2008
  4. Johannes SchindelinJul 21, 2008
  5. Junio C HamanoJul 22, 2008
  6. Alex RiesenJul 22, 2008
  7. Johannes SixtJul 22, 2008
  8. Alex RiesenJul 22, 2008
  9. Johannes SixtJul 22, 2008
  10. Junio C HamanoJul 22, 2008
  11. Build configuration to skip ctime for modification testAlex Riesen, Jul 22, 2008
  12. Johannes SchindelinJul 22, 2008
  13. Alex RiesenJul 22, 2008
  14. Junio C HamanoJul 23, 2008
  15. Alex RiesenJul 23, 2008
  16. Johannes SchindelinJul 23, 2008
  17. Alex RiesenJul 23, 2008
  18. Linus TorvaldsJul 25, 2008
  19. Alex RiesenJul 25, 2008
  20. Johannes SchindelinJul 26, 2008
  21. Make use of stat.ctime configurableAlex Riesen, Jul 26, 2008
  22. Junio C HamanoJul 27, 2008
  23. Junio C HamanoJul 27, 2008
  24. Make use of stat.ctime configurableAlex Riesen, Jul 28, 2008
  25. David BrownJul 28, 2008
  26. Linus TorvaldsJul 28, 2008
  27. Alex RiesenJul 28, 2008
  28. Junio C HamanoJul 29, 2008
  29. Linus TorvaldsJul 29, 2008
  30. Junio C HamanoJul 29, 2008
  31. David BrownJul 29, 2008
  32. Junio C HamanoJul 29, 2008
  33. Johannes SchindelinJul 29, 2008
  34. Linus TorvaldsJul 29, 2008
  35. Linus TorvaldsJul 29, 2008
  36. Johannes SchindelinJul 29, 2008
  37. Petr BaudisJul 28, 2008
  38. Improve the placement of core.trustctime in the documentationAlex Riesen, Jul 28, 2008
  39. Junio C HamanoJul 29, 2008
  40. Do not use ctime if file mode is not usedAlex Riesen, Jul 24, 2008
  41. git svn throws locale related error when built from sourceAnton Mostovoy, Jul 23, 2008

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.