subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache subversion Wiki <comm...@subversion.apache.org>
Subject [Subversion Wiki] Update of "MtimePreservation" by JulianFoad
Date Mon, 16 Dec 2013 11:12:14 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for change notification.

The "MtimePreservation" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/MtimePreservation?action=diff&rev1=7&rev2=8

Comment:
Comment on the svn:text-time format.

  Nearly every modern operating system associates a "modified time" with each file on the
system, updating it whenever the file is modified. This metadata can be very important, but
Subversion currently offers no way to preserve it.
  
  This design proposes adding a new 'svn:text-time' property to store the modified time of
each file or directory in UTC time using the format 'YYYY-MM-DDTHH:MM:SS.UUUUUU'. The name
of this property was chosen because it is already used in an identical manner by FSVS and
svntar.
+ 
+  ''[JAF] ''''''According to [[http://svn.apache.org/repos/asf/subversion/trunk/subversion/include/svn_props.h|svn_props.h]],
t''he format has a 'Z' on the end''.
  
  == Rules ==
   * The svn:text-time property is only relevant when the node is in the repository and at
the moment of going into or out of the repository.
@@ -26, +28 @@

  
  == mtime-usage ==
  A new client-side configuration option named 'mtime-usage' should be introduced to specify
how Subversion treats a node's mtime during an update operation.  It can be one of the following
options:
+ 
   * text-time-or-now (default; sets mtime=svn:text-time if possible, else sets mtime=stime)
   * text-time-or-commit-time (sets mtime=svn:text-time if possible, else sets mtime=ctime)
   * now (sets mtime=stime; identical to current default behaviour)
@@ -44, +47 @@

  
  === svn update ===
  (The following logic is applied after the file has been updated.)
+ 
   * If mtime-usage == now, mtime = stime
   * Else if mtime-usage == commit-time, mtime = ctime
   * Else if text-time is defined:
@@ -85, +89 @@

  The build system 'make' defines a specific set of output files for a specific set of input
files. Whenever the output files are built, their mtime is set to stime. Whenever rebuilding,
it checks to see if mtime of the the input files is newer than the mtime of the output files
and rebuilds them if that's the case.
  
  Implementation:
+ 
   * The output files must not be under version control.
   * The input files must not have text-time set.
  
@@ -92, +97 @@

  Log files are often opened and resaved, even when nothing is written to them. This is not
expected to count as a modification.
  
  Implementation:
+ 
   * text-time must not be set on the log files.
  
  ==== Compiler-generated files ====
  When building software, the compiler may be configured to output a compiler-generated file.
These often get re-generated with identical output, only modifying the mtime. This is not
expected to count as a modification.
  
  Implementation:
+ 
   * text-time must not be set on the output files.
   * To reduce the number of unnecessary generations, it should also not be set on the input
files.
  
@@ -108, +115 @@

  In this scenario, the user stores uncompressed images in one folder and then runs a script
to compress the images and dump them in another folder. The compression tool can generate
slightly different bitstreams on different computers. Both folders are required to be under
version control, and should avoid recompressing images that have not changed.
  
  Implementation:
+ 
   * Auto-props should be set up to add text-time to both the input and output image files.
   * Any existing files must have text-time added manually.
   * The script must set the mtime of each output file to the mtime of the matching input
file and only recompress when the mtimes differ.
@@ -116, +124 @@

  In this scenario, Subversion is primarily used to detect modified files and upload them
to an off-site server; version control is only used in rare cases, such as a file being backup
up after it was corrupted.
  
  Implementation:
+ 
   * Auto-props should be set up to add text-time to all files.
   * Any existing file must have text-time added manually.
  
@@ -123, +132 @@

  Some users maintain their mtime to refer to the publication date of a file. It should be
possible to locate a document based on its mtime, even if that document was committed weeks
after it was modified.
  
  Implementation:
+ 
   * Auto-props should be set up to add text-time to all document files.
   * In an un-mixed environment, matching '*' would be sufficient.
   * Any existing files must have text-time added manually.
@@ -131, +141 @@

  Web servers expose the mtime as the 'Last-Modified-Date' header in http requests, which
is used in a variety of ways. Clients use it to determine whether or not the file needs to
be re-cached, reducing bandwidth for the server. Search engines use it to determine if the
page needs to be reindexed, or when the user requests to find a page matching a certain date
range. Users use it when they need to determine if the information on a page is obsolete.
Web servers also offer index pages, which show all the files in a directory and allow the
user to sort by mtime.
  
  Implementation:
+ 
   * Auto-props should be set up to add text-time to all document files.
   * Web sites are often mixed environments, so some file types may have to be excluded to
ensure tools like 'make' continue to work.
   * Any existing document files must have text-time added manually.

Mime
View raw message