Thread (61 messages) flat view 61 messages, 5 authors, 2016-06-15

Re: [PATCH 18/19] update-index: test the system before enabling untracked cache

From: Eric Sunshine <hidden>
Date: 2016-06-15 23:02:48

On Mon, Oct 27, 2014 at 8:10 AM, Nguyễn Thái Ngọc Duy [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
---
diff --git a/builtin/update-index.c b/builtin/update-index.c
index e57e2d7..471c0b4 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -48,6 +48,145 @@ static void report(const char *fmt, ...)
        va_end(vp);
 }

+static int test_if_untracked_cache_is_supported(void)
+{
+       struct stat st;
+       struct stat_data base;
+       int fd;
+
+       fprintf(stderr, _("Testing "));
+       xmkdir("dir-mtime-test");
+       atexit(remove_test_directory);
+       xstat("dir-mtime-test", &st);
+       fill_stat_data(&base, &st);
+       fputc('.', stderr);
+
+       avoid_racy();
+       fd = create_file("dir-mtime-test/newfile");
+       xstat("dir-mtime-test", &st);
+       if (!match_stat_data(&base, &st)) {
close(fd);
+               fputc('\n', stderr);
+               fprintf_ln(stderr,_("directory stat info does not "
+                                   "change after adding a new file"));
+               return 0;
+       }
+       fill_stat_data(&base, &st);
+       fputc('.', stderr);
+
+       avoid_racy();
+       xmkdir("dir-mtime-test/new-dir");
+       xstat("dir-mtime-test", &st);
+       if (!match_stat_data(&base, &st)) {
close(fd);
+               fputc('\n', stderr);
+               fprintf_ln(stderr, _("directory stat info does not change "
+                                    "after adding a new directory"));
+               return 0;
+       }
+       fill_stat_data(&base, &st);
+       fputc('.', stderr);
+
+       avoid_racy();
+       write_or_die(fd, "data", 4);
+       close(fd);
+       xstat("dir-mtime-test", &st);
+       if (match_stat_data(&base, &st)) {
+               fputc('\n', stderr);
+               fprintf_ln(stderr, _("directory stat info changes "
+                                    "after updating a file"));
+               return 0;
+       }
+       fputc('.', stderr);
+
+       avoid_racy();
+       close(create_file("dir-mtime-test/new-dir/new"));
+       xstat("dir-mtime-test", &st);
+       if (match_stat_data(&base, &st)) {
+               fputc('\n', stderr);
+               fprintf_ln(stderr, _("directory stat info changes after "
+                                    "adding a file inside subdirectory"));
+               return 0;
+       }
+       fputc('.', stderr);
+
+       avoid_racy();
+       xunlink("dir-mtime-test/newfile");
+       xstat("dir-mtime-test", &st);
+       if (!match_stat_data(&base, &st)) {
+               fputc('\n', stderr);
+               fprintf_ln(stderr, _("directory stat info does not "
+                                    "change after deleting a file"));
+               return 0;
+       }
+       fill_stat_data(&base, &st);
+       fputc('.', stderr);
+
+       avoid_racy();
+       xunlink("dir-mtime-test/new-dir/new");
+       xrmdir("dir-mtime-test/new-dir");
+       xstat("dir-mtime-test", &st);
+       if (!match_stat_data(&base, &st)) {
+               fputc('\n', stderr);
+               fprintf_ln(stderr, _("directory stat info does not "
+                                    "change after deleting a directory"));
+               return 0;
+       }
+
+       xrmdir("dir-mtime-test");
+       fprintf_ln(stderr, _(" OK"));
+       return 1;
+}
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help