comparison mercurial/helptext/internals/dirstate-v2.txt @ 48191:a5a673ec8f6f

dirstate-v2: Change the representation of negative directory mtime Change it from how I previously thought C’s `timespec` works to how it actually works. The previous behavior was also buggy for timestamps strictly before the epoch but less than one second away from it, because two’s complement does not distinguish negative zero from positive zero. Differential Revision: https://phab.mercurial-scm.org/D11629
author Simon Sapin <simon.sapin@octobus.net>
date Mon, 11 Oct 2021 22:19:42 +0200
parents 6e01bcd111d2
children 320de901896a
comparison
equal deleted inserted replaced
48190:0cc0c0972164 48191:a5a673ec8f6f
441 * Offset 31: 441 * Offset 31:
442 12 bytes set to zero 442 12 bytes set to zero
443 443
444 If an untracked node `HAS_MTIME` *set*, 444 If an untracked node `HAS_MTIME` *set*,
445 what follows is the modification time of a directory 445 what follows is the modification time of a directory
446 represented with separated second and sub-second components 446 represented similarly to the C `timespec` struct:
447 since the Unix epoch:
448 447
449 * Offset 31: 448 * Offset 31:
450 The number of seconds as a signed (two’s complement) 64-bit integer. 449 The number of seconds elapsed since the Unix epoch,
450 as a signed (two’s complement) 64-bit integer.
451 451
452 * Offset 39: 452 * Offset 39:
453 The number of nanoseconds as 32-bit integer. 453 The number of nanoseconds elapsed since
454 the instant specified by the previous field alone,
455 as 32-bit integer.
454 Always greater than or equal to zero, and strictly less than a billion. 456 Always greater than or equal to zero, and strictly less than a billion.
455 Increasing this component makes the modification time 457 Increasing this component makes the modification time
456 go forward or backward in time dependening 458 go forward in time regardless of the sign of the seconds component.
457 on the sign of the integral seconds components.
458 (Note: this is buggy because there is no negative zero integer,
459 but will be changed soon.)
460 459
461 The presence of a directory modification time means that at some point, 460 The presence of a directory modification time means that at some point,
462 this path in the working directory was observed: 461 this path in the working directory was observed:
463 462
464 - To be a directory 463 - To be a directory