Patchwork Allow commit date before Unix epoch

login
register
mail settings
Submitter Florent Gallaire
Date March 29, 2016, 12:55 a.m.
Message ID <CAB9F1cdjR3H1epRrbVdFYtmryJyuHndWtB4t4hKQqVDQ8FvkJg@mail.gmail.com>
Download mbox | patch
Permalink /patch/14191/
State Rejected
Delegated to: Yuya Nishihara
Headers show

Comments

Florent Gallaire - March 29, 2016, 12:55 a.m.
# HG changeset patch
# User Florent Gallaire <fgallaire@gmail.com>
# Date 1459212616 -7200
#      Tue Mar 29 02:50:16 2016 +0200
# Node ID ece34634e504271cf2a1dc696a2a0486a8b13488
# Parent  0e330d7d9f53fc37cbeee8d1389a06465eca2241
date: allow negative timestamp

DCVS are very useful to store various texts (as legislation) written before
Unix epoch. Fri, 13 Dec 1901 is a nice gain over Thu, 01 Jan 1970.
Yuya Nishihara - March 31, 2016, 1:18 p.m.
On Tue, 29 Mar 2016 02:55:52 +0200, Florent Gallaire wrote:
> # HG changeset patch
> # User Florent Gallaire <fgallaire@gmail.com>
> # Date 1459212616 -7200
> #      Tue Mar 29 02:50:16 2016 +0200
> # Node ID ece34634e504271cf2a1dc696a2a0486a8b13488
> # Parent  0e330d7d9f53fc37cbeee8d1389a06465eca2241
> date: allow negative timestamp
> 
> DCVS are very useful to store various texts (as legislation) written before
> Unix epoch. Fri, 13 Dec 1901 is a nice gain over Thu, 01 Jan 1970.

IMHO, negative date is harmful rather than useful. Also, there was a problem
on Windows.

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

Patch

diff -r 0e330d7d9f53 -r ece34634e504 mercurial/util.py
--- a/mercurial/util.py    Mon Mar 28 17:16:00 2016 -0500
+++ b/mercurial/util.py    Tue Mar 29 02:50:16 2016 +0200
@@ -1578,9 +1578,6 @@ 
     number of seconds away from UTC. if timezone is false, do not
     append time zone to string."""
     t, tz = date or makedate()
-    if t < 0:
-        t = 0   # time.gmtime(lt) fails on Windows for lt < -43200
-        tz = 0
     if "%1" in format or "%2" in format or "%z" in format:
         sign = (tz > 0) and "-" or "+"
         minutes = abs(tz) // 60
@@ -1714,8 +1711,6 @@ 
     # to UTC+14
     if abs(when) > 0x7fffffff:
         raise Abort(_('date exceeds 32 bits: %d') % when)
-    if when < 0:
-        raise Abort(_('negative date value: %d') % when)
     if offset < -50400 or offset > 43200:
         raise Abort(_('impossible time zone offset: %d') % offset)
     return when, offset
diff -r 0e330d7d9f53 -r ece34634e504 tests/test-commit.t
--- a/tests/test-commit.t    Mon Mar 28 17:16:00 2016 -0500
+++ b/tests/test-commit.t    Tue Mar 29 02:50:16 2016 +0200
@@ -27,8 +27,8 @@ 
   $ hg commit -d '111111111111 0' -m commit-7
   abort: date exceeds 32 bits: 111111111111
   [255]
-  $ hg commit -d '-7654321 3600' -m commit-7
-  abort: negative date value: -7654321
+  $ hg commit -d '-111111111111 3600' -m commit-7
+  abort: date exceeds 32 bits: -111111111111
   [255]

 commit added file that has been deleted