When I am using sublime, and I've made no changes then the icon in the editor shows the file is unchanged.However, if I click to save it, it still sets the filesystem mtime time to now.Should a non-changing save really update the modified time?Simple example:Create an empty file$ touch example.file$ stat -l example.file -rw-r--r-- 1 matthew staff 0 Jul  9 14:45:41 2013 example.fileTouching it updates the mtime$ touch example.file$ stat -l example.file-rw-r--r-- 1 matthew staff 0 Jul  9 14:45:57 2013 example.fileEditing it, but making no changes, also updates the mtime$ vim example.file# :wq # write and quit, making no changes$ stat -l example.file-rw-r--r-- 1 matthew staff 0 Jul  9 14:46:10 2013 example.file
Why do text editors set the mtime on save when no changes have been made?
files;editors
Should a non-changing save really update the modified time?Yes, because when an application writes a file out, the operating system writes that data to disk.  It may be exactly the same as the data already in the file, but the OS is not going to check or care whether that is true.  Of course, text editors hopefully are not so naive as to write an entire file for each save, because I save very frequently and would prefer not to wear a disk pointlessly (maybe file caching and syncing by the OS ameliorates this so the application does not have to worry).A lot of applications (including vim) will notice if a file they have loaded is changed externally, and notify the user.  I would have presumed they do this based on mtime, but a quick check with touch demonstrates that at least in vim's case, it is not that simple (begging the question of how vim knows a change has been made -- perhaps if the mtime has changed a hash of the two versions is compared?).  My point with this is that if the application is monitoring a file for external changes, then it should be able to save changes safely without re-writing the entire file (again: hopefully).  In that case, you would think saving an unchanged file might mean doing nothing.  However, since the user did ask for a save (even though the user knows, or can know, whether it is necessary), then IMO the application should at least touch the file to reflect this.  It may be of value, if, eg. you are relying on the timestamp to reflect the last update, even if this update amounts to nothing.After all, if you don't want the timestamp changed, you don't have to save unchanged documents.