D11844: dirstate-item: ignore mtime to write v1 when `mtime-second-ambiguous` is set
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Thu Dec 2 19:04:59 UTC 2021
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
We cannot preserve that information in the v1 format so that mtime is ambiguous.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D11844
AFFECTED FILES
mercurial/cext/parsers.c
mercurial/pure/parsers.py
rust/hg-core/src/dirstate/entry.rs
CHANGE DETAILS
diff --git a/rust/hg-core/src/dirstate/entry.rs b/rust/hg-core/src/dirstate/entry.rs
--- a/rust/hg-core/src/dirstate/entry.rs
+++ b/rust/hg-core/src/dirstate/entry.rs
@@ -454,7 +454,11 @@
} else if !self.flags.contains(Flags::P1_TRACKED) {
MTIME_UNSET
} else if let Some(mtime) = self.mtime {
- i32::try_from(mtime.truncated_seconds()).unwrap()
+ if mtime.second_ambiguous {
+ MTIME_UNSET
+ } else {
+ i32::try_from(mtime.truncated_seconds()).unwrap()
+ }
} else {
MTIME_UNSET
}
diff --git a/mercurial/pure/parsers.py b/mercurial/pure/parsers.py
--- a/mercurial/pure/parsers.py
+++ b/mercurial/pure/parsers.py
@@ -551,6 +551,8 @@
return AMBIGUOUS_TIME
elif not self._p1_tracked:
return AMBIGUOUS_TIME
+ elif self._mtime_second_ambiguous:
+ return AMBIGUOUS_TIME
else:
return self._mtime_s
diff --git a/mercurial/cext/parsers.c b/mercurial/cext/parsers.c
--- a/mercurial/cext/parsers.c
+++ b/mercurial/cext/parsers.c
@@ -269,7 +269,8 @@
} else if (!(self->flags & dirstate_flag_has_mtime) ||
!(self->flags & dirstate_flag_p1_tracked) ||
!(self->flags & dirstate_flag_wc_tracked) ||
- (self->flags & dirstate_flag_p2_info)) {
+ (self->flags & dirstate_flag_p2_info) ||
+ (self->flags & dirstate_flag_mtime_second_ambiguous)) {
return ambiguous_time;
} else {
return self->mtime_s;
To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list