update-index: refresh should rewrite index in case of racy timestamps
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v4 Latest4 patches 0 repliesNew
- v34 patches 1 replySuperseded
- v22 patches 3 repliesSuperseded
Earlier versions · 1
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v1 | 1 patch | 2 replies | Superseded |
Changes in v4 from the cover letter
* test-lib: improve API for verifying file mtime
* fix quoting around "$1"
* use "rm -f" for cleanup of auxiliary files
* improve API description comments
* Note that gitgitgadget's "freebsd_12" check is failing since a couple of days (unrelated to this pull request); hence, this check hasn't been applied to this patch series
Patches in v4 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/4 | test-lib: introduce API for verifying file mtimet/ | +33 | 0 replies | |
| 2/4 | t7508: fix bogus mtime verificationt/ | +3 | 0 replies | |
| 3/4 | t7508: add tests capturing racy timestamp handlingt/ | +22 | 0 replies | |
| 4/4 | update-index: refresh should rewrite index in case of racy timestampsbuiltin/ cache.h read-cache.c +1 more | +77 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v4 yet.
Cover letter [PATCH v4 0/4] update-index: refresh should rewrite index in case of racy timestamps
This patch makes update-index --refresh write the index if it contains racy timestamps, as discussed at [1].
Changes since v3:
* test-lib: improve API for verifying file mtime
* fix quoting around "$1"
* use "rm -f" for cleanup of auxiliary files
* improve API description comments
* Note that gitgitgadget's "freebsd_12" check is failing since a couple of days (unrelated to this pull request); hence, this check hasn't been applied to this patch series
Changes since v2:
* new patch: test-lib: introduce API for verifying file mtime
* new patch: t7508: fix bogus mtime verification for test "--no-optional-locks prevents index update"
* change new tests in t2108 and t7508 to use new test-lib mtime API
* fix "--refresh has no racy timestamps to fix" to use +60s mtime to be save on VFAT
Changes since v1:
* main commit message now uses 'git update-index' and the paragraph was dropped
* t/t7508-status.sh: two tests added which capture status racy handling
* builtin/update-index.c: comment improved
* t/t2108-update-index-refresh-racy.sh: major overhaul
* one test case added
* mtime-manipulations simplified and aligned to t7508
* code style fixes, as discussed
[1]
https://lore.kernel.org/git/[email protected]/
Marc Strapetz (4):
test-lib: introduce API for verifying file mtime
t7508: fix bogus mtime verification
t7508: add tests capturing racy timestamp handling
update-index: refresh should rewrite index in case of racy timestamps
builtin/update-index.c | 11 +++++ cache.h | 1 + read-cache.c | 2 +- t/t2108-update-index-refresh-racy.sh | 64 ++++++++++++++++++++++++++++ t/t7508-status.sh | 30 ++++++++++--- t/test-lib-functions.sh | 33 ++++++++++++++ 6 files changed, 135 insertions(+), 6 deletions(-) create mode 100755 t/t2108-update-index-refresh-racy.sh
base-commit: dcc0cd074f0c639a0df20461a301af6d45bd582e
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1105%2Fmstrap%2Ffeature%2Fupdate-index-refresh-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1105/mstrap/feature/update-index-refresh-v4
Pull-Request: https://github.com/gitgitgadget/git/pull/1105
Range-diff vs v3:
1: e6301e9d770 ! 1: 37c11bfafc4 test-lib: introduce API for verifying file mtime
@@ t/test-lib-functions.sh: test_region () {
perl -le 'print readlink($_) for @ARGV' "$@"
}
+
-+# Set a fixed "magic" mtime to the given file,
-+# with an optional increment specified as second argument.
-+# Use in combination with test_is_magic_mtime.
++# Set mtime to a fixed "magic" timestamp in mid February 2009, before we
++# run an operation that may or may not touch the file. If the file was
++# touched, its timestamp will not accidentally have such an old timestamp,
++# as long as your filesystem clock is reasonably correct. To verify the
++# timestamp, follow up with test_is_magic_mtime.
++#
++# An optional increment to the magic timestamp may be specified as second
++# argument.
+test_set_magic_mtime () {
-+ # We are using 1234567890 because it's a common timestamp used in
-+ # various tests. It represents date 2009-02-13 which should be safe
-+ # to use as long as the filetime clock is reasonably accurate.
+ local inc=${2:-0} &&
+ local mtime=$((1234567890 + $inc)) &&
-+ test-tool chmtime =$mtime $1 &&
-+ test_is_magic_mtime $1 $inc
++ test-tool chmtime =$mtime "$1" &&
++ test_is_magic_mtime "$1" $inc
+}
+
-+# Test whether the given file has the "magic" mtime set,
-+# with an optional increment specified as second argument.
-+# Use in combination with test_set_magic_mtime.
++# Test whether the given file has the "magic" mtime set. This is meant to
++# be used in combination with test_set_magic_mtime.
++#
++# An optional increment to the magic timestamp may be specified as second
++# argument. Usually, this should be the same increment which was used for
++# the associated test_set_magic_mtime.
+test_is_magic_mtime () {
+ local inc=${2:-0} &&
+ local mtime=$((1234567890 + $inc)) &&
+ echo $mtime >.git/test-mtime-expect &&
-+ test-tool chmtime --get $1 >.git/test-mtime-actual &&
++ test-tool chmtime --get "$1" >.git/test-mtime-actual &&
+ test_cmp .git/test-mtime-expect .git/test-mtime-actual
+ local ret=$?
-+ rm .git/test-mtime-expect
-+ rm .git/test-mtime-actual
++ rm -f .git/test-mtime-expect
++ rm -f .git/test-mtime-actual
+ return $ret
+}
2: d15a23cc804 = 2: c97a41af389 t7508: fix bogus mtime verification
3: 3567ef91e7a = 3: 82d0b6ab8d2 t7508: add tests capturing racy timestamp handling
4: 4a6b18fb304 = 4: e31edb74e24 update-index: refresh should rewrite index in case of racy timestampsSignature · 1 line
gitgitgadget