[PATCH v2 0/3] teach git to respect fsmonitor in diff-index
- From
Nipunn Koorapati via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Mar 17, 2021, 21:22 UTC
- Message-ID
- <pull.903.v2.git.1616016143.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.903.git.1615760258.gitgitgadget@gmail.com>
Skip lstat deletion check during git diff-index (similar to how it already does so in git diff-files). Add perf benchmark for this case. Add assert for guaranteeing that fsmonitor is refreshed in this case.
Update since Patch Series V1:
* Fix spaces->tabs issue in fsmonitor.h * Remove comment in test-chmtime.c - to avoid it going stale
cc: Eric Sunshine sunshine@sunshineco.com
Nipunn Koorapati (3): fsmonitor: skip lstat deletion check during git diff-index fsmonitor: add assertion that fsmonitor is valid to check_removed fsmonitor: add perf test for git diff HEAD
diff-lib.c | 23 +++++++++++++++-------- fsmonitor.h | 11 +++++++++++ t/helper/test-chmtime.c | 4 ++-- t/perf/p7519-fsmonitor.sh | 4 ++++ 4 files changed, 32 insertions(+), 10 deletions(-)
base-commit: 13d7ab6b5d7929825b626f050b62a11241ea4945 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-903%2Fnipunn1313%2Fnk%2Ffsmonitor-in-diff-index-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-903/nipunn1313/nk/fsmonitor-in-diff-index-v2 Pull-Request: https://github.com/gitgitgadget/git/pull/903
Range-diff vs v1:
1: 75a3c46c4055 = 1: 75a3c46c4055 fsmonitor: skip lstat deletion check during git diff-index
2: dda5b537a3f0 ! 2: afd326c5011b fsmonitor: add assertion that fsmonitor is valid to check_removed
@@ fsmonitor.h: void refresh_fsmonitor(struct index_state *istate);
+ */
+static inline int is_fsmonitor_refreshed(const struct index_state *istate)
+{
-+ return !core_fsmonitor || istate->fsmonitor_has_run_once;
++ return !core_fsmonitor || istate->fsmonitor_has_run_once;
+}
+
/*
3: 740302586dd8 ! 3: f9d0fd594fdb fsmonitor: add perf test for git diff HEAD
@@ Commit message
## t/helper/test-chmtime.c ##
@@ t/helper/test-chmtime.c: int cmd__chmtime(int argc, const char **argv)
+ uintmax_t mtime;
+
if (stat(argv[i], &sb) < 0) {
- fprintf(stderr, "Failed to stat %s: %s\n",
+- fprintf(stderr, "Failed to stat %s: %s\n",
++ fprintf(stderr, "Failed to stat %s: %s. Skipping\n",
argv[i], strerror(errno));
- return 1;
-+ // Skip and move on - eg if it's a broken symlink
+ continue;
}
-- gitgitgadget