[Bug 6182] New: changelog and manifest file timestamps are not kept up to date on Windows.

mercurial-bugs at mercurial-scm.org mercurial-bugs at mercurial-scm.org
Sat Aug 3 08:53:53 UTC 2019


https://bz.mercurial-scm.org/show_bug.cgi?id=6182

            Bug ID: 6182
           Summary: changelog and manifest file timestamps are not kept up
                    to date on Windows.
           Product: Mercurial
           Version: 4.9
          Hardware: PC
                OS: Windows
            Status: UNCONFIRMED
          Severity: bug
          Priority: wish
         Component: Mercurial
          Assignee: bugzilla at mercurial-scm.org
          Reporter: mrw at eandem.co.uk
                CC: mercurial-devel at mercurial-scm.org

This was noticed using the standalone web server viewing a tree of repositories
on a Windows box.  Each repository's last modified date is a lot older than the
last actual update to the repo.

My investigation led me to find that the last modified date shown by the web
server is based on the 00changelog.i file in the .hg/store directory.  Checking
the last write date for this file shows that the web server is correctly
reporting the last modified date based on this file.

Testing with a trial repo with a changelog file several weeks old and
committing a new change shows that the changelog file last write date advances
by one second from the previous date, it is not updated to the date and time
that the commit happens.

This appears to be the result of the call avoidambig() in util.py.  I
temporarily modified this function to call os.utime(path, None) and the last
write date on the changelog file was updated to the current date time on a
commit.  I tried to work why it was using just adding one second to the
original mtime and not a current date time but got lost in a maze of twisty
little passages, sorry.

I investigated this using 4.9.1 as that was the last Python module install
available for Windows that I am aware of.  I have checked that the behaviour
has not changed with a MSI install of 5.1 on a different Windows box.  The
issue does not occur on the various unixen I have access to.

Here is a simple sequence to show that the changelog and manifest file times
are only being advanced by 1 second.  The file system is Windows NTFS.

PS F:\hg\utime> hg init                                                        
                                                                               
                    PS F:\hg\utime> echo "hi" > a                              
                                                                               
                                        PS F:\hg\utime> hg commit -Am "init"   
                                                                               
                                                            adding a
PS F:\hg\utime> gci .hg\store\*.i | select Name,LastWriteTime                   
Name          LastWriteTime
----          -------------
00changelog.i 03/08/2019 13:42:22
00manifest.i  03/08/2019 13:42:23


PS F:\hg\utime> date                                                            
03 August 2019 13:43:01


PS F:\hg\utime> echo " world" >> a                                             
                                                                               
                    PS F:\hg\utime> hg commit -m "more"                        
                                                                               
                                        PS F:\hg\utime> gci .hg\store\*.i |
select Name,LastWriteTime                                                       
Name          LastWriteTime
----          -------------
00changelog.i 03/08/2019 13:42:23
00manifest.i  03/08/2019 13:42:24

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list