{"thread":{"id":"24605","subject":"Back-dating commits--way back--for constitution.git","startedAt":"2010-08-02T18:32:00Z","lastAt":"2010-08-08T04:11:30Z","messageCount":36,"participants":["Joel C. Salomon","Shawn O. Pearce","Ævar Arnfjörð Bjarmason","Jakub Narebski","Junio C Hamano","Michael J Gruber","Joshua Juran","Jeff King","Sverre Rabbelier","Michael Witten","Brandon Casey"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"146966","messageId":"i372v0$3np$1@dough.gmane.org","threadId":"24605","inReplyTo":null,"subject":"Back-dating commits--way back--for constitution.git","fromName":"Joel C. Salomon","fromEmail":"joelcsalomon@gmail.com","sentAt":"2010-08-02T18:32:00Z","receivedAt":"2010-08-02T18:32:00Z","isPatch":false,"sender":{"key":"joelcsalomon@gmail.com","avatar":"https://gravatar.com/avatar/271ed240fc850235728b19d5b2b9f38c41ebdf0209c5b663f8b07060950489e6?d=mp&s=160"},"body":"I'd figured to play with Git in an unusual way: to create a repository\nfor the U.S. Constitution where amendments are presented as patches.\nE.g., instead of the First Amendment being placed at the end (as is\nusual) I'm putting it in Article 1, Section 9 (Limitations of Congress).\n Proposed amendments get branches, which get merged in later.\n\nBut I'm trying to get the dates right, and I'm missing something.  For\nexample, I made the initial commit with the line\n\n\t$ git commit --author=\"The Philadelphia Convention <>\" \\\n\t --date=\"Mon, 17 Sep 1787 12:00:00 EST\"\n\nbut that's not actually setting the commit date to 1787.\n\nAm I doing something wrong, or is Git (quite reasonably) unable to\naccept commit dates that far in the past?\n\n--Joel\n"},{"id":"146967","messageId":"20100802183420.GN25268@spearce.org","threadId":"24605","inReplyTo":"i372v0$3np$1@dough.gmane.org","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2010-08-02T18:34:20Z","receivedAt":"2010-08-02T18:34:20Z","isPatch":false,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"\"Joel C. Salomon\" <joelcsalomon@gmail.com> wrote:\n> I'd figured to play with Git in an unusual way: to create a repository\n> for the U.S. Constitution where amendments are presented as patches.\n> E.g., instead of the First Amendment being placed at the end (as is\n> usual) I'm putting it in Article 1, Section 9 (Limitations of Congress).\n>  Proposed amendments get branches, which get merged in later.\n> \n> But I'm trying to get the dates right, and I'm missing something.  For\n> example, I made the initial commit with the line\n> \n> \t$ git commit --author=\"The Philadelphia Convention <>\" \\\n> \t --date=\"Mon, 17 Sep 1787 12:00:00 EST\"\n> \n> but that's not actually setting the commit date to 1787.\n> \n> Am I doing something wrong, or is Git (quite reasonably) unable to\n> accept commit dates that far in the past?\n\nIts probably running into problems with time_t on your system being a\n32 bit value, and thus having trouble going before some time in 1901.\n\n-- \nShawn.\n"},{"id":"146968","messageId":"AANLkTi=O1qw=xeP3v4X+Yqrb1884azbxLDxFz3PUj=9a@mail.gmail.com","threadId":"24605","inReplyTo":"20100802183420.GN25268@spearce.org","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Joel C. Salomon","fromEmail":"joelcsalomon@gmail.com","sentAt":"2010-08-02T18:41:06Z","receivedAt":"2010-08-02T18:41:06Z","isPatch":false,"sender":{"key":"joelcsalomon@gmail.com","avatar":"https://gravatar.com/avatar/271ed240fc850235728b19d5b2b9f38c41ebdf0209c5b663f8b07060950489e6?d=mp&s=160"},"body":"On Mon, Aug 2, 2010 at 2:34 PM, Shawn O. Pearce <spearce@spearce.org> wrote:\n> \"Joel C. Salomon\" <joelcsalomon@gmail.com> wrote:\n<snip>\n>>       $ git commit --author=\"The Philadelphia Convention <>\" \\\n>>        --date=\"Mon, 17 Sep 1787 12:00:00 EST\"\n>>\n>> but that's not actually setting the commit date to 1787.\n>>\n>> Am I doing something wrong, or is Git (quite reasonably) unable to\n>> accept commit dates that far in the past?\n>\n> Its probably running into problems with time_t on your system being a\n> 32 bit value, and thus having trouble going before some time in 1901.\n\nI was afraid of that.  Oh, well.\n\nThanks,\n--Joel\n"},{"id":"146995","messageId":"AANLkTik2B8pGo8uR4yxV3nz-Nx6dcU+fiO8GWgv9-VtW@mail.gmail.com","threadId":"24605","inReplyTo":"i372v0$3np$1@dough.gmane.org","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2010-08-02T21:25:13Z","receivedAt":"2010-08-02T21:25:13Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"On Mon, Aug 2, 2010 at 18:32, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n> I'd figured to play with Git in an unusual way: to create a repository\n> for the U.S. Constitution where amendments are presented as patches.\n> E.g., instead of the First Amendment being placed at the end (as is\n> usual) I'm putting it in Article 1, Section 9 (Limitations of Congress).\n>  Proposed amendments get branches, which get merged in later.\n>\n> But I'm trying to get the dates right, and I'm missing something.  For\n> example, I made the initial commit with the line\n\nAs noted by Shawn time_t doesn't like ancient commits. But as an aside\nI'd like to ask where this project is being hosted. I've wanted to\nplay with importing law into Git, and it would be interesting to\nfollow this project.\n\nThere's some Icelandic law currently enacted that hasn't been changed\nsince the 1200s. Getting that into Git would be interesting.\n"},{"id":"146999","messageId":"m3hbjcptyr.fsf@localhost.localdomain","threadId":"24605","inReplyTo":"i372v0$3np$1@dough.gmane.org","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2010-08-02T21:48:32Z","receivedAt":"2010-08-02T21:48:32Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"\"Joel C. Salomon\" <joelcsalomon@gmail.com> writes:\n\n> I'd figured to play with Git in an unusual way: to create a repository\n> for the U.S. Constitution where amendments are presented as patches.\n> E.g., instead of the First Amendment being placed at the end (as is\n> usual) I'm putting it in Article 1, Section 9 (Limitations of Congress).\n>  Proposed amendments get branches, which get merged in later.\n> \n> But I'm trying to get the dates right, and I'm missing something.  For\n> example, I made the initial commit with the line\n> \n> \t$ git commit --author=\"The Philadelphia Convention <>\" \\\n> \t --date=\"Mon, 17 Sep 1787 12:00:00 EST\"\n> \n> but that's not actually setting the commit date to 1787.\n> \n> Am I doing something wrong, or is Git (quite reasonably) unable to\n> accept commit dates that far in the past?\n\nGit encodes author and commit (and tagger) time using Unix epoch\n(POSIX epoch) plus timezone.  As Shawn and Ævar wrote on 32-bit\nsystems time_t can cover a range of about 136 years in total around\nJanuary 1, 1970, which means that the maximum representable time on\n32-bit system is 2038-01-19 (the year 2038 problem), but what is more\nimportant to you is that minimum representable time is 1901-12-13.\n1787 is too old for 32-bit time_t.\n\nThe headers inside commit (and tag) objects are stored in text form,\nso they are not limited to 32-bit value.  You would have to use system\nthat has 64-bit time_t, or patch git.\n\n64-bit time_t would be enough for everyone (sic!).\n\nReferences:\n-----------\nhttp://en.wikipedia.org/wiki/Unix_epoch\n-- \nJakub Narebski\nPoland\nShadeHawk on #git\n"},{"id":"147013","messageId":"7vy6coiqdt.fsf@alter.siamese.dyndns.org","threadId":"24605","inReplyTo":"m3hbjcptyr.fsf@localhost.localdomain","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2010-08-02T22:47:10Z","receivedAt":"2010-08-02T22:47:10Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jakub Narebski <jnareb@gmail.com> writes:\n\n> The headers inside commit (and tag) objects are stored in text form,\n> so they are not limited to 32-bit value.  You would have to use system\n> that has 64-bit time_t, or patch git.\n\nI thought the internal representation of our time was \"unsigned long\", no?\nHow can you represent anything before Unix epoch?\n"},{"id":"147022","messageId":"201008030939.09999.jnareb@gmail.com","threadId":"24605","inReplyTo":"7vy6coiqdt.fsf@alter.siamese.dyndns.org","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2010-08-03T07:39:08Z","receivedAt":"2010-08-03T07:39:08Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Dnia wtorek 3. sierpnia 2010 00:47, Junio C Hamano napisał:\n> Jakub Narebski <jnareb@gmail.com> writes:\n> \n> > The headers inside commit (and tag) objects are stored in text form,\n> > so they are not limited to 32-bit value.  You would have to use system\n> > that has 64-bit time_t, or patch git.\n> \n> I thought the internal representation of our time was \"unsigned long\", no?\n> How can you represent anything before Unix epoch?\n\ntime_t is signed long.  Besides, git uses textual representation, its\njust a matter of putting minus sign.  We can always fall back to\nlow level git-hash-object.\n\nI'm just not sure if 'git commit' can work with dates prior to Unix\nepoch.  I guess that git has some sanity checks that flies in the face\nof such ab)use of git.\n\nRefrences:\n==========\n[1] time(p) manpage\n[2] http://en.wikipedia.org/wiki/Unix_epoch#Representing_the_number\n[3] http://en.wikipedia.org/wiki/Time_t\n\n-- \nJakub Narebski\nPoland\n"},{"id":"147024","messageId":"201008031000.53581.jnareb@gmail.com","threadId":"24605","inReplyTo":"201008030939.09999.jnareb@gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2010-08-03T08:00:52Z","receivedAt":"2010-08-03T08:00:52Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Dnia wtorek 3. sierpnia 2010 09:39, Jakub Narebski napisał:\n> Dnia wtorek 3. sierpnia 2010 00:47, Junio C Hamano napisał:\n> > Jakub Narebski <jnareb@gmail.com> writes:\n> > \n> > > The headers inside commit (and tag) objects are stored in text form,\n> > > so they are not limited to 32-bit value.  You would have to use system\n> > > that has 64-bit time_t, or patch git.\n> > \n> > I thought the internal representation of our time was \"unsigned long\", no?\n> > How can you represent anything before Unix epoch?\n> \n> time_t is signed long.  Besides, git uses textual representation, its\n> just a matter of putting minus sign.  We can always fall back to\n> low level git-hash-object.\n\nAnd it works:\n\n  $ git show\n  commit a5f4eaace56c6887846ea77725e1ac6827bb13b0\n  Author: Jakub Narebski <jnareb@gmail.com>\n  Date:   Fri May 31 18:24:20 1929 +0200\n  \n      git-hash-object\n\n  $ git cat-file -p HEAD\n  tree 953e0e451fdcb5c21a25ee7ef9faade5791b95ee\n  parent 6a28c9c996d785b716559f57149a9b5c11fd83ff\n  author Jakub Narebski <jnareb@gmail.com> -1280820940 +0200\n  committer Jakub Narebski <jnareb@gmail.com> 1280820940 +0200\n  \n  git-hash-object\n\n-- \nJakub Narebski\nPoland\n"},{"id":"147026","messageId":"4C57D997.5010003@drmicha.warpmail.net","threadId":"24605","inReplyTo":"m3hbjcptyr.fsf@localhost.localdomain","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Michael J Gruber","fromEmail":"git@drmicha.warpmail.net","sentAt":"2010-08-03T08:55:51Z","receivedAt":"2010-08-03T08:55:51Z","isPatch":false,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"Jakub Narebski venit, vidit, dixit 02.08.2010 23:48:\n> \"Joel C. Salomon\" <joelcsalomon@gmail.com> writes:\n> \n>> I'd figured to play with Git in an unusual way: to create a repository\n>> for the U.S. Constitution where amendments are presented as patches.\n>> E.g., instead of the First Amendment being placed at the end (as is\n>> usual) I'm putting it in Article 1, Section 9 (Limitations of Congress).\n>>  Proposed amendments get branches, which get merged in later.\n>>\n>> But I'm trying to get the dates right, and I'm missing something.  For\n>> example, I made the initial commit with the line\n>>\n>> \t$ git commit --author=\"The Philadelphia Convention <>\" \\\n>> \t --date=\"Mon, 17 Sep 1787 12:00:00 EST\"\n>>\n>> but that's not actually setting the commit date to 1787.\n>>\n>> Am I doing something wrong, or is Git (quite reasonably) unable to\n>> accept commit dates that far in the past?\n> \n> Git encodes author and commit (and tagger) time using Unix epoch\n> (POSIX epoch) plus timezone.  As Shawn and Ævar wrote on 32-bit\n> systems time_t can cover a range of about 136 years in total around\n> January 1, 1970, which means that the maximum representable time on\n> 32-bit system is 2038-01-19 (the year 2038 problem), but what is more\n> important to you is that minimum representable time is 1901-12-13.\n> 1787 is too old for 32-bit time_t.\n> \n> The headers inside commit (and tag) objects are stored in text form,\n> so they are not limited to 32-bit value.  You would have to use system\n> that has 64-bit time_t, or patch git.\n\nHmm, sizeof(time_t) == 8 for my x86_64 Fedora, but committing ancient\ntimes fails.\n\nMy ctime() happily converts negative numbers into dates before the epoch.\n\n> \n> 64-bit time_t would be enough for everyone (sic!).\n> \n> References:\n> -----------\n> http://en.wikipedia.org/wiki/Unix_epoch\n\nJunio replied:\n>I thought the internal representation of our time was \"unsigned long\", >no?\n>How can you represent anything before Unix epoch?\n\nWe have a mix of time_t and unsigned long (not signed, not long long!),\nand we have our own tm_to_time_t() in date.c which explicitly forbids\nyears before 1970. It seems we don't use standard ctime() and friends\nbecause the standards is not so standard and want to be independent of\nthat, but sizeof(long) is still system dependent.\n\nRemoving the check in tm_to_time_t() by brute force let's me commit\nancient times, but the parser gets them wrong (either on input or on\noutput, I haven't checked), 1787 ends up output as 1899.\n\ntime_t is signed on most systems. Using unsigned long buys us a few\nyears as long as we don't go through any system routine nor conversion\nto time_t. So maybe we should:\n\n- check to make sure we use time_t and system routines only when getting\nthe current time\n- use signed long long as our git_time_t (I think long is less system\ndependent then long but I could be wrong)\n- make our own algorithms work for the extended format\n\nMichael\n"},{"id":"147029","messageId":"FF986C58-37A5-41ED-B2AF-1EA4C045B9F7@gmail.com","threadId":"24605","inReplyTo":"4C57D997.5010003@drmicha.warpmail.net","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Joshua Juran","fromEmail":"jjuran@gmail.com","sentAt":"2010-08-03T09:32:06Z","receivedAt":"2010-08-03T09:32:06Z","isPatch":false,"sender":{"key":"jjuran@gmail.com","avatar":null},"body":"On Aug 3, 2010, at 1:55 AM, Michael J Gruber wrote:\n\n> Jakub Narebski venit, vidit, dixit 02.08.2010 23:48:\n>\n>> The headers inside commit (and tag) objects are stored in text form,\n>> so they are not limited to 32-bit value.  You would have to use  \n>> system\n>> that has 64-bit time_t, or patch git.\n>>\n>> 64-bit time_t would be enough for everyone (sic!).\n>\n\n> time_t is signed on most systems. Using unsigned long buys us a few\n> years as long as we don't go through any system routine nor conversion\n> to time_t. So maybe we should:\n>\n> - check to make sure we use time_t and system routines only when  \n> getting\n> the current time\n> - use signed long long as our git_time_t (I think long is less system\n> dependent then long but I could be wrong)\n\nObviously you mean \"I think long long is less system dependent than  \nlong\".\n\nDoes any system exist where long long is not 64 bits?  In any case,  \nyou can future-proof it by spelling it \"int64_t\".  That symbol is not  \nguaranteed to exist (nor is <stdint.h>), but neither is the long long  \ntype in the first place.\n\n> - make our own algorithms work for the extended format\n\nThis would enable systems with 32-bit time_t to deal with pre-1901  \ncommit timestamps in Git.[1]  Hopefully such systems will become  \nincreasingly rare.\n\nJosh\n\n[1] Or post-2038 timestamps, but any use case for such is dubious.\n"},{"id":"147030","messageId":"201008031202.53804.jnareb@gmail.com","threadId":"24605","inReplyTo":"4C57D997.5010003@drmicha.warpmail.net","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2010-08-03T10:02:52Z","receivedAt":"2010-08-03T10:02:52Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"On Tue, 3 Aug 2010, Michael J Gruber wrote:\n> Jakub Narebski venit, vidit, dixit 02.08.2010 23:48:\n>> \"Joel C. Salomon\" <joelcsalomon@gmail.com> writes:\n \n>>> [...] I'm trying to get the dates right, and I'm missing something.  For\n>>> example, I made the initial commit with the line\n>>>\n>>> \t$ git commit --author=\"The Philadelphia Convention <>\" \\\n>>> \t --date=\"Mon, 17 Sep 1787 12:00:00 EST\"\n>>>\n>>> but that's not actually setting the commit date to 1787.\n>>>\n>>> Am I doing something wrong, or is Git (quite reasonably) unable to\n>>> accept commit dates that far in the past?\n>> \n>> Git encodes author and commit (and tagger) time using Unix epoch\n>> (POSIX epoch) plus timezone.  As Shawn and Ævar wrote on 32-bit\n>> systems time_t can cover a range of about 136 years in total around\n>> January 1, 1970, which means that the maximum representable time on\n>> 32-bit system is 2038-01-19 (the year 2038 problem), but what is more\n>> important to you is that minimum representable time is 1901-12-13.\n>> 1787 is too old for 32-bit time_t.\n>> \n>> The headers inside commit (and tag) objects are stored in text form,\n>> so they are not limited to 32-bit value.  You would have to use system\n>> that has 64-bit time_t, or patch git.\n> \n> Hmm, sizeof(time_t) == 8 for my x86_64 Fedora, but committing ancient\n> times fails.\n\nThat's because git *porcelain* either does not use time_t consistently,\nor has some sanity checks that are good heuristic for ordinary use (like\ne.g. commit time not too far in past where git didn't even exists),\nor both.\n\nIt is not a problem on lowest level, i.e. repository format and plumbing.\nI was able to create a commit that had author time before Unix epoch \nusing plumbing:\n\n\n1. create an ordinary commit as a template (so I don't have to go down\n   to the level of gitcore-tutorial:\n\n  $ git commit -a\n  [master 8ddcf60] foo\n  1 files changed, 1 insertions(+), 0 deletions(-)\n\n2. save commit object in a file, to be edited\n\n  $ git cat-file -p HEAD > tmp.txt\n\n3. edit tmp.txt, changing sign of author time\n\n  $ [edit tmp.txt]\n  $ cat tmp.txt\n  tree 953e0e451fdcb5c21a25ee7ef9faade5791b95ee\n  parent 6a28c9c996d785b716559f57149a9b5c11fd83ff\n  author Jakub Narebski <jnareb@gmail.com> -12808209400 +0200\n  committer Jakub Narebski <jnareb@gmail.com> 1280820940 +0200\n  \n  git-hash-object\n\n4. replace just created commit by handcrafted one\n\n  $ git reset --hard HEAD^\n  $ git hash-object -t commit -w tmp.txt\n  fa5e5a2b6f27f10ce920ca82ffef07ed3eb3f26f\n  $ git update-ref -m 'commit: foo' refs/heads/master \\\n  fa5e5a2b6f27f10ce920ca82ffef07ed3eb3f26f\n\n5. check that porcelain parses date correctly\n\n  $ git show\n  commit a5f4eaace56c6887846ea77725e1ac6827bb13b0\n  Author: Jakub Narebski <jnareb@gmail.com>\n  Date:   Fri May 31 18:24:20 1929 +0200\n  \n      git-hash-object\n\n\nThough when I tried to create commit with authordate further in the past,\nporcelain shown 1970 (Unix epoch) as a date, but my system has 32-bit\ntime_t.\n\n> My ctime() happily converts negative numbers into dates before the epoch.\n\nTry ./test-date in git sources...\n \n> Junio replied:\n>>\n>> I thought the internal representation of our time was \"unsigned long\",>no?\n>> How can you represent anything before Unix epoch?\n> \n> We have a mix of time_t and unsigned long (not signed, not long long!),\n> and we have our own tm_to_time_t() in date.c which explicitly forbids\n> years before 1970. It seems we don't use standard ctime() and friends\n> because the standards is not so standard and want to be independent of\n> that, but sizeof(long) is still system dependent.\n> \n> Removing the check in tm_to_time_t() by brute force let's me commit\n> ancient times, but the parser gets them wrong (either on input or on\n> output, I haven't checked), 1787 ends up output as 1899.\n\nHmmm...\n\n-- \nJakub Narebski\nPoland\n"},{"id":"147031","messageId":"201008031208.50149.jnareb@gmail.com","threadId":"24605","inReplyTo":"201008031202.53804.jnareb@gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2010-08-03T10:08:49Z","receivedAt":"2010-08-03T10:08:49Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Jakub Narebski wrote:\n> 3. edit tmp.txt, changing sign of author time\n> \n>   $ [edit tmp.txt]\n>   $ cat tmp.txt\n>   tree 953e0e451fdcb5c21a25ee7ef9faade5791b95ee\n>   parent 6a28c9c996d785b716559f57149a9b5c11fd83ff\n>   author Jakub Narebski <jnareb@gmail.com> -12808209400 +0200\n\nErrr... wrong file copy'n'pasted.  It was\n\n    author Jakub Narebski <jnareb@gmail.com> -1280820940 +0200\n\n>   committer Jakub Narebski <jnareb@gmail.com> 1280820940 +0200\n\n-- \nJakub Narebski\nPoland\n"},{"id":"147040","messageId":"20100803124456.GA11608@coredump.intra.peff.net","threadId":"24605","inReplyTo":"FF986C58-37A5-41ED-B2AF-1EA4C045B9F7@gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2010-08-03T12:44:56Z","receivedAt":"2010-08-03T12:44:56Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Aug 03, 2010 at 02:32:06AM -0700, Joshua Juran wrote:\n\n> >- use signed long long as our git_time_t (I think long is less system\n> >dependent then long but I could be wrong)\n> \n> Obviously you mean \"I think long long is less system dependent than\n> long\".\n> \n> Does any system exist where long long is not 64 bits?  In any case,\n> you can future-proof it by spelling it \"int64_t\".  That symbol is not\n> guaranteed to exist (nor is <stdint.h>), but neither is the long long\n> type in the first place.\n\nC99 specifies that \"short\" and \"int\" be at least 16 bits, that \"long\" be\nat least 32 bits, and that \"long long\" be at least 64 bits. See section\n5.2.4.2.1.\n\n-Peff\n"},{"id":"147041","messageId":"20100803124831.GB11608@coredump.intra.peff.net","threadId":"24605","inReplyTo":"201008031202.53804.jnareb@gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2010-08-03T12:48:31Z","receivedAt":"2010-08-03T12:48:31Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Aug 03, 2010 at 12:02:52PM +0200, Jakub Narebski wrote:\n\n> > Hmm, sizeof(time_t) == 8 for my x86_64 Fedora, but committing ancient\n> > times fails.\n> \n> That's because git *porcelain* either does not use time_t consistently,\n> or has some sanity checks that are good heuristic for ordinary use (like\n> e.g. commit time not too far in past where git didn't even exists),\n> or both.\n> \n> It is not a problem on lowest level, i.e. repository format and plumbing.\n> I was able to create a commit that had author time before Unix epoch \n> using plumbing:\n\nI am not sure there isn't some unportability at the lowest level. We\nfreely interchange between time_t and unsigned long in the low-level\ndate code. It probably happens to work because casting the bits back and\nforth between signed and unsigned types generally works, as long as you\nend up with the type that you want. But it isn't necessarily portable,\nand there can be subtle bugs. See, for example, my recent 9ba0f033.\n\n-Peff\n"},{"id":"147048","messageId":"201008031519.11012.jnareb@gmail.com","threadId":"24605","inReplyTo":"20100803124831.GB11608@coredump.intra.peff.net","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2010-08-03T13:19:09Z","receivedAt":"2010-08-03T13:19:09Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"On Tue, 3 Aug 2010, Jeff King wrote:\n> On Tue, Aug 03, 2010 at 12:02:52PM +0200, Jakub Narebski wrote:\n> \n> > > Hmm, sizeof(time_t) == 8 for my x86_64 Fedora, but committing ancient\n> > > times fails.\n> > \n> > That's because git *porcelain* either does not use time_t consistently,\n> > or has some sanity checks that are good heuristic for ordinary use (like\n> > e.g. commit time not too far in past where git didn't even exists),\n> > or both.\n> > \n> > It is not a problem on lowest level, i.e. repository format and plumbing.\n> > I was able to create a commit that had author time before Unix epoch \n> > using plumbing:\n> \n> I am not sure there isn't some unportability at the lowest level. We\n> freely interchange between time_t and unsigned long in the low-level\n> date code. It probably happens to work because casting the bits back and\n> forth between signed and unsigned types generally works, as long as you\n> end up with the type that you want. But it isn't necessarily portable,\n> and there can be subtle bugs. See, for example, my recent 9ba0f033.\n\nWell, at least there is not a problem at lowest of low, i.e. repository\nformat level, thanks to the use of textual representation for epoch.\n\n-- \nJakub Narebski\nPoland\n"},{"id":"147049","messageId":"20100803132026.GA14883@coredump.intra.peff.net","threadId":"24605","inReplyTo":"201008031519.11012.jnareb@gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2010-08-03T13:20:26Z","receivedAt":"2010-08-03T13:20:26Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Aug 03, 2010 at 03:19:09PM +0200, Jakub Narebski wrote:\n\n> > I am not sure there isn't some unportability at the lowest level. We\n> > freely interchange between time_t and unsigned long in the low-level\n> > date code. It probably happens to work because casting the bits back and\n> > forth between signed and unsigned types generally works, as long as you\n> > end up with the type that you want. But it isn't necessarily portable,\n> > and there can be subtle bugs. See, for example, my recent 9ba0f033.\n> \n> Well, at least there is not a problem at lowest of low, i.e. repository\n> format level, thanks to the use of textual representation for epoch.\n\nYes, the good news that this is purely a code problem. The data format\nis fine. It would just take somebody going through the code and\nswitching all \"unsigned long\" to \"long long\" (or time_t, or even\n\"gittime_t\" if we want to abstract it).\n\n-Peff\n"},{"id":"147050","messageId":"4C581881.9060202@drmicha.warpmail.net","threadId":"24605","inReplyTo":"20100803132026.GA14883@coredump.intra.peff.net","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Michael J Gruber","fromEmail":"git@drmicha.warpmail.net","sentAt":"2010-08-03T13:24:17Z","receivedAt":"2010-08-03T13:24:17Z","isPatch":false,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"Jeff King venit, vidit, dixit 03.08.2010 15:20:\n> On Tue, Aug 03, 2010 at 03:19:09PM +0200, Jakub Narebski wrote:\n> \n>>> I am not sure there isn't some unportability at the lowest level. We\n>>> freely interchange between time_t and unsigned long in the low-level\n>>> date code. It probably happens to work because casting the bits back and\n>>> forth between signed and unsigned types generally works, as long as you\n>>> end up with the type that you want. But it isn't necessarily portable,\n>>> and there can be subtle bugs. See, for example, my recent 9ba0f033.\n>>\n>> Well, at least there is not a problem at lowest of low, i.e. repository\n>> format level, thanks to the use of textual representation for epoch.\n> \n> Yes, the good news that this is purely a code problem. The data format\n> is fine. It would just take somebody going through the code and\n> switching all \"unsigned long\" to \"long long\" (or time_t, or even\n> \"gittime_t\" if we want to abstract it).\n\n...and fixing the parser algorithm at least in tm_to_time_t()...\n\nMichael\n"},{"id":"147051","messageId":"20100803133246.GA15062@coredump.intra.peff.net","threadId":"24605","inReplyTo":"4C581881.9060202@drmicha.warpmail.net","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2010-08-03T13:32:46Z","receivedAt":"2010-08-03T13:32:46Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Aug 03, 2010 at 03:24:17PM +0200, Michael J Gruber wrote:\n\n> > Yes, the good news that this is purely a code problem. The data format\n> > is fine. It would just take somebody going through the code and\n> > switching all \"unsigned long\" to \"long long\" (or time_t, or even\n> > \"gittime_t\" if we want to abstract it).\n> \n> ...and fixing the parser algorithm at least in tm_to_time_t()...\n\nYeah, I should have been more clear. It is _not_ just \"sed s/unsigned\nlong/long long\", but rather checking every change to make sure that you\naren't introducing new bugs, and that the code correctly handles signed\ntypes. Which is why nobody has done it. ;)\n\n-Peff\n"},{"id":"147061","messageId":"2D8CEA56-63B7-425E-A92B-89E2D1548679@gmail.com","threadId":"24605","inReplyTo":"20100803124456.GA11608@coredump.intra.peff.net","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Joshua Juran","fromEmail":"jjuran@gmail.com","sentAt":"2010-08-03T17:37:26Z","receivedAt":"2010-08-03T17:37:26Z","isPatch":false,"sender":{"key":"jjuran@gmail.com","avatar":null},"body":"On Aug 3, 2010, at 5:44 AM, Jeff King wrote:\n\n> On Tue, Aug 03, 2010 at 02:32:06AM -0700, Joshua Juran wrote:\n>\n>>> - use signed long long as our git_time_t (I think long is less  \n>>> system\n>>> dependent then long but I could be wrong)\n>>\n>> Obviously you mean \"I think long long is less system dependent than\n>> long\".\n>>\n>> Does any system exist where long long is not 64 bits?  In any case,\n>> you can future-proof it by spelling it \"int64_t\".  That symbol is not\n>> guaranteed to exist (nor is <stdint.h>), but neither is the long long\n>> type in the first place.\n>\n> C99 specifies that \"short\" and \"int\" be at least 16 bits, that  \n> \"long\" be\n> at least 32 bits, and that \"long long\" be at least 64 bits. See  \n> section\n> 5.2.4.2.1.\n\nRight, but there's no guarantee that long long won't be *larger* than  \n64 bits.  Though maybe that wouldn't be a problem.\n\nJosh\n"},{"id":"147062","messageId":"20100803174904.GA28529@coredump.intra.peff.net","threadId":"24605","inReplyTo":"2D8CEA56-63B7-425E-A92B-89E2D1548679@gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2010-08-03T17:49:04Z","receivedAt":"2010-08-03T17:49:04Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Aug 03, 2010 at 10:37:26AM -0700, Joshua Juran wrote:\n\n> >>Does any system exist where long long is not 64 bits?  In any case,\n> >>you can future-proof it by spelling it \"int64_t\".  That symbol is not\n> >>guaranteed to exist (nor is <stdint.h>), but neither is the long long\n> >>type in the first place.\n> >\n> >C99 specifies that \"short\" and \"int\" be at least 16 bits, that\n> >\"long\" be\n> >at least 32 bits, and that \"long long\" be at least 64 bits. See\n> >section\n> >5.2.4.2.1.\n> \n> Right, but there's no guarantee that long long won't be *larger* than\n> 64 bits.  Though maybe that wouldn't be a problem.\n\nAh, I took your statement to mean \"at least\". In this case, I don't\nthink it would be a problem (we could just represent more times).\n\n-Peff\n"},{"id":"147118","messageId":"4C599781.2020603@gmail.com","threadId":"24605","inReplyTo":"AANLkTik2B8pGo8uR4yxV3nz-Nx6dcU+fiO8GWgv9-VtW@mail.gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Joel C. Salomon","fromEmail":"joelcsalomon@gmail.com","sentAt":"2010-08-04T16:38:25Z","receivedAt":"2010-08-04T16:38:25Z","isPatch":false,"sender":{"key":"joelcsalomon@gmail.com","avatar":"https://gravatar.com/avatar/271ed240fc850235728b19d5b2b9f38c41ebdf0209c5b663f8b07060950489e6?d=mp&s=160"},"body":"On 08/02/2010 05:25 PM, Ævar Arnfjörð Bjarmason wrote:\n> On Mon, Aug 2, 2010 at 18:32, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n>> I'd figured to play with Git in an unusual way: to create a repository\n>> for the U.S. Constitution where amendments are presented as patches.\n>> E.g., instead of the First Amendment being placed at the end (as is\n>> usual) I'm putting it in Article 1, Section 9 (Limitations of Congress).\n>> Proposed amendments get branches, which get merged in later.\n> \n> I'd like to ask where this project is being hosted. I've wanted to\n> play with importing law into Git, and it would be interesting to\n> follow this project.\n\nIt's local to my machine for now, especially since I can't (yet?) get\nthe dates right. Also, I'm rebasing as I tweak the TeX code.\n\nLaw-into-RCS has been on my mind since I learned out what RCSs are for.\n Read any bill that the US Congress passes: there's an intro, a whole\nlot of boilerplate, and then:\n\nSEC. 101. EXTENSION OF CHIP.\n\n    Section 2104(a) (42 U.S.C. 1397dd(a)) is amended--\n            (1) in paragraph (10), by striking ``and'' at the end;\n            (2) by amending paragraph (11), by striking ``each of\n        fiscal years 2008 and 2009'' and inserting ``fiscal year\n        2008''; and\n            (3) by adding at the end the following new paragraphs:\n            ``(12) for fiscal year 2009, $10,562,000,000;\n            ``(13) for fiscal year 2010, $12,520,000,000;\n            ``(14) for fiscal year 2011, $13,459,000,000;\n            ``(15) for fiscal year 2012, $14,982,000,000; and\n            ``(16) for fiscal year 2013, for purposes of making 2 semi-\n        annual allotments--\n                    ``(A) $3,000,000,000 for the period beginning on\n                October 1, 2012, and ending on March 31, 2013, and\n                    ``(B) $3,000,000,000 for the period beginning on\n                April 1, 2013, and ending on September 30, 2013.''.\n\nSEC. 102. ALLOTMENTS FOR STATES AND TERRITORIES FOR FISCAL YEARS 2009\n              THROUGH 2013.\n\n    Section 2104 (42 U.S.C. 1397dd) is amended--\n            (1) in subsection (b)(1), by striking ``subsection (d)''\n        and inserting ``subsections (d) and (m)'';\n            (2) in subsection (c)(1), by striking ``subsection (d)''\n        and inserting ``subsections (d) and (m)(4)''; and\n            (3) by adding at the end the following new subsection:\n....\n\nSure looks like a patch series to me.\n\n> There's some Icelandic law currently enacted that hasn't been changed\n> since the 1200s. Getting that into Git would be interesting.\n\nExtremely.\n\nI'll put my Constitution project up on GitHub in a few days.  Just note\nthat I *will* rebase and publish.\n\n--Joel\n"},{"id":"147126","messageId":"AANLkTimRPnjeWQ7gXt90Kwx-fxQ_gwCd3vaKLY5-oPAu@mail.gmail.com","threadId":"24605","inReplyTo":"4C599781.2020603@gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2010-08-04T19:07:06Z","receivedAt":"2010-08-04T19:07:06Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"On Wed, Aug 4, 2010 at 16:38, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n> On 08/02/2010 05:25 PM, Ævar Arnfjörð Bjarmason wrote:\n>> On Mon, Aug 2, 2010 at 18:32, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n>>> I'd figured to play with Git in an unusual way: to create a repository\n>>> for the U.S. Constitution where amendments are presented as patches.\n>>> E.g., instead of the First Amendment being placed at the end (as is\n>>> usual) I'm putting it in Article 1, Section 9 (Limitations of Congress).\n>>> Proposed amendments get branches, which get merged in later.\n>>\n>> I'd like to ask where this project is being hosted. I've wanted to\n>> play with importing law into Git, and it would be interesting to\n>> follow this project.\n>\n> It's local to my machine for now, especially since I can't (yet?) get\n> the dates right. Also, I'm rebasing as I tweak the TeX code.\n>\n> Law-into-RCS has been on my mind since I learned out what RCSs are for.\n>  Read any bill that the US Congress passes: there's an intro, a whole\n> lot of boilerplate, and then:\n>\n> SEC. 101. EXTENSION OF CHIP.\n>\n>    Section 2104(a) (42 U.S.C. 1397dd(a)) is amended--\n>            (1) in paragraph (10), by striking ``and'' at the end;\n>            (2) by amending paragraph (11), by striking ``each of\n>        fiscal years 2008 and 2009'' and inserting ``fiscal year\n>        2008''; and\n>            (3) by adding at the end the following new paragraphs:\n>            ``(12) for fiscal year 2009, $10,562,000,000;\n>            ``(13) for fiscal year 2010, $12,520,000,000;\n>            ``(14) for fiscal year 2011, $13,459,000,000;\n>            ``(15) for fiscal year 2012, $14,982,000,000; and\n>            ``(16) for fiscal year 2013, for purposes of making 2 semi-\n>        annual allotments--\n>                    ``(A) $3,000,000,000 for the period beginning on\n>                October 1, 2012, and ending on March 31, 2013, and\n>                    ``(B) $3,000,000,000 for the period beginning on\n>                April 1, 2013, and ending on September 30, 2013.''.\n>\n> SEC. 102. ALLOTMENTS FOR STATES AND TERRITORIES FOR FISCAL YEARS 2009\n>              THROUGH 2013.\n>\n>    Section 2104 (42 U.S.C. 1397dd) is amended--\n>            (1) in subsection (b)(1), by striking ``subsection (d)''\n>        and inserting ``subsections (d) and (m)'';\n>            (2) in subsection (c)(1), by striking ``subsection (d)''\n>        and inserting ``subsections (d) and (m)(4)''; and\n>            (3) by adding at the end the following new subsection:\n> ....\n>\n> Sure looks like a patch series to me.\n\nYeah, I think every legal system has their own ad-hoc patch convention\nlike that. It can be really hard to figure it all out. Parsing that is\nnon-trivial, but being able to generate diffs based on that would be a\nvery valuable resource.\n\n>> There's some Icelandic law currently enacted that hasn't been changed\n>> since the 1200s. Getting that into Git would be interesting.\n>\n> Extremely.\n>\n> I'll put my Constitution project up on GitHub in a few days.  Just note\n> that I *will* rebase and publish.\n\nGreat.\n"},{"id":"147255","messageId":"4C5B2F2E.4050709@gmail.com","threadId":"24605","inReplyTo":"4C599781.2020603@gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Joel C. Salomon","fromEmail":"joelcsalomon@gmail.com","sentAt":"2010-08-05T21:37:50Z","receivedAt":"2010-08-05T21:37:50Z","isPatch":false,"sender":{"key":"joelcsalomon@gmail.com","avatar":"https://gravatar.com/avatar/271ed240fc850235728b19d5b2b9f38c41ebdf0209c5b663f8b07060950489e6?d=mp&s=160"},"body":"On 08/04/2010 12:38 PM, Joel C. Salomon wrote:\n> I'll put my Constitution project up on GitHub in a few days.  Just note\n> that I *will* rebase and publish.\n\nIt's up, at <http://github.com/jcsalomon/constitution>, with one commit.\n (No amendments yet.)\n\nI'm curious to find out if folks with 64-bit time_t get the correct\nauthor and commit times.\n\n--Joel\n"},{"id":"147257","messageId":"AANLkTikWc0rKV9rQsLfmZvhdqAuvATmbur2ZqQ4Xu7uo@mail.gmail.com","threadId":"24605","inReplyTo":"4C5B2F2E.4050709@gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2010-08-05T21:58:36Z","receivedAt":"2010-08-05T21:58:36Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"On Thu, Aug 5, 2010 at 21:37, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n> On 08/04/2010 12:38 PM, Joel C. Salomon wrote:\n>> I'll put my Constitution project up on GitHub in a few days.  Just note\n>> that I *will* rebase and publish.\n>\n> It's up, at <http://github.com/jcsalomon/constitution>, with one commit.\n>  (No amendments yet.)\n>\n> I'm curious to find out if folks with 64-bit time_t get the correct\n> author and commit times.\n\nOn 32bit:\n\ncommit 826a4f7721fe1c3963a733ecbc5422f05925af5d\nAuthor: The Philadelphia Convention <>\nDate:   Wed Dec 31 19:59:59 1969 -0400\n\nOn 64bit:\n\ncommit 826a4f7721fe1c3963a733ecbc5422f05925af5d\nAuthor: The Philadelphia Convention <>\nDate:   Mon Sep 17 13:00:00 1787 -0400\n\nIt would be useful to turn that into a TODO test for Git.\n"},{"id":"147259","messageId":"AANLkTimdZrdLFEit7ecXkEcGdfevbvp2TU1ekHddUHwf@mail.gmail.com","threadId":"24605","inReplyTo":"AANLkTikWc0rKV9rQsLfmZvhdqAuvATmbur2ZqQ4Xu7uo@mail.gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2010-08-05T22:10:27Z","receivedAt":"2010-08-05T22:10:27Z","isPatch":false,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"Heya,\n\nOn Thu, Aug 5, 2010 at 16:58, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:\n> On 32bit:\n>\n> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n> Author: The Philadelphia Convention <>\n> Date:   Wed Dec 31 19:59:59 1969 -0400\n>\n> On 64bit:\n>\n> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n> Author: The Philadelphia Convention <>\n> Date:   Mon Sep 17 13:00:00 1787 -0400\n>\n> It would be useful to turn that into a TODO test for Git.\n\nThat's bad, if we can't store a particular date we should do something\nabout it, not just silently underflow.\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"147302","messageId":"m3vd7ooeru.fsf@localhost.localdomain","threadId":"24605","inReplyTo":"AANLkTimdZrdLFEit7ecXkEcGdfevbvp2TU1ekHddUHwf@mail.gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2010-08-06T08:18:05Z","receivedAt":"2010-08-06T08:18:05Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Sverre Rabbelier <srabbelier@gmail.com> writes:\n> On Thu, Aug 5, 2010 at 16:58, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:\n> > On 32bit:\n> >\n> > commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n> > Author: The Philadelphia Convention <>\n> > Date:   Wed Dec 31 19:59:59 1969 -0400\n> >\n> > On 64bit:\n> >\n> > commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n> > Author: The Philadelphia Convention <>\n> > Date:   Mon Sep 17 13:00:00 1787 -0400\n> >\n> > It would be useful to turn that into a TODO test for Git.\n> \n> That's bad, if we can't store a particular date we should do something\n> about it, not just silently underflow.\n\nWe can *store* it without problems, the problem is with\n*interpretation* by porcelain (and some plumbing).\n\n-- \nJakub Narebski\nPoland\nShadeHawk on #git\n"},{"id":"147313","messageId":"AANLkTi=VUULkuhinLD_fztq5NiWCq+g+rm=KGQppXr2h@mail.gmail.com","threadId":"24605","inReplyTo":"m3vd7ooeru.fsf@localhost.localdomain","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Michael Witten","fromEmail":"mfwitten@gmail.com","sentAt":"2010-08-06T14:01:41Z","receivedAt":"2010-08-06T14:01:41Z","isPatch":false,"sender":{"key":"mfwitten@gmail.com","avatar":"https://avatars.githubusercontent.com/u/597101?v=4"},"body":"On Fri, Aug 6, 2010 at 03:18, Jakub Narebski <jnareb@gmail.com> wrote:\n> the problem is with *interpretation* by\n> porcelain (and some plumbing).\n\nThe problem is that git was written with leaky abstractions.\n"},{"id":"147319","messageId":"AANLkTiniRmnwHaZ2MOWkrZ9c82SjykQFB6hBs5TWbLD1@mail.gmail.com","threadId":"24605","inReplyTo":"m3vd7ooeru.fsf@localhost.localdomain","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2010-08-06T15:08:20Z","receivedAt":"2010-08-06T15:08:20Z","isPatch":false,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"Heya,\n\nOn Fri, Aug 6, 2010 at 03:18, Jakub Narebski <jnareb@gmail.com> wrote:\n> We can *store* it without problems, the problem is with\n> *interpretation* by porcelain (and some plumbing).\n\nThat's what I mean though, if the porcelain notices it's trying to\nread in a date it can't interpret correctly it should warn the user of\nthis fact.\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"147320","messageId":"AANLkTikJP2d5_pA+RcQeToE+RGW0oBhcZyghLfqDoJ8E@mail.gmail.com","threadId":"24605","inReplyTo":"AANLkTikWc0rKV9rQsLfmZvhdqAuvATmbur2ZqQ4Xu7uo@mail.gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Joel C. Salomon","fromEmail":"joelcsalomon@gmail.com","sentAt":"2010-08-06T15:18:25Z","receivedAt":"2010-08-06T15:18:25Z","isPatch":false,"sender":{"key":"joelcsalomon@gmail.com","avatar":"https://gravatar.com/avatar/271ed240fc850235728b19d5b2b9f38c41ebdf0209c5b663f8b07060950489e6?d=mp&s=160"},"body":"On Thu, Aug 5, 2010 at 5:58 PM, Ævar Arnfjörð Bjarmason\n<avarab@gmail.com> wrote:\n> On Thu, Aug 5, 2010 at 21:37, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n>> It's up, at <http://github.com/jcsalomon/constitution>, with one commit.\n>>\n>> I'm curious to find out if folks with 64-bit time_t get the correct\n>> author and commit times.\n>\n> On 32bit:\n>\n> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n> Author: The Philadelphia Convention <>\n> Date:   Wed Dec 31 19:59:59 1969 -0400\n>\n> On 64bit:\n>\n> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n> Author: The Philadelphia Convention <>\n> Date:   Mon Sep 17 13:00:00 1787 -0400\n\nCool, it works!  (The 13:00 should have been 12:00, but there's some\nDST weirdness at work.)\n\nCan you check what git-fsck has to say about the repos, on 32- &\n64-bit machines?\n\n--Joel\n"},{"id":"147321","messageId":"AANLkTinXtjn7=9jRNmv4zhhPiy3NVOca0gY9dkYCUhY7@mail.gmail.com","threadId":"24605","inReplyTo":"AANLkTikJP2d5_pA+RcQeToE+RGW0oBhcZyghLfqDoJ8E@mail.gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2010-08-06T15:19:57Z","receivedAt":"2010-08-06T15:19:57Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"On Fri, Aug 6, 2010 at 15:18, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n> On Thu, Aug 5, 2010 at 5:58 PM, Ævar Arnfjörð Bjarmason\n> <avarab@gmail.com> wrote:\n>> On Thu, Aug 5, 2010 at 21:37, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n>>> It's up, at <http://github.com/jcsalomon/constitution>, with one commit.\n>>>\n>>> I'm curious to find out if folks with 64-bit time_t get the correct\n>>> author and commit times.\n>>\n>> On 32bit:\n>>\n>> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n>> Author: The Philadelphia Convention <>\n>> Date:   Wed Dec 31 19:59:59 1969 -0400\n>>\n>> On 64bit:\n>>\n>> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n>> Author: The Philadelphia Convention <>\n>> Date:   Mon Sep 17 13:00:00 1787 -0400\n>\n> Cool, it works!  (The 13:00 should have been 12:00, but there's some\n> DST weirdness at work.)\n>\n> Can you check what git-fsck has to say about the repos, on 32- &\n> 64-bit machines?\n\n32bit says:\n\n    error in commit 826a4f7721fe1c3963a733ecbc5422f05925af5d: invalid\nauthor/committer line\n\n64 bit doesn't give any warning at all.\n"},{"id":"147322","messageId":"AANLkTik2fem_=vN1J52z+QqtCamxNhHAVeG1jxrbSCba@mail.gmail.com","threadId":"24605","inReplyTo":"AANLkTinXtjn7=9jRNmv4zhhPiy3NVOca0gY9dkYCUhY7@mail.gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Joel C. Salomon","fromEmail":"joelcsalomon@gmail.com","sentAt":"2010-08-06T15:29:23Z","receivedAt":"2010-08-06T15:29:23Z","isPatch":false,"sender":{"key":"joelcsalomon@gmail.com","avatar":"https://gravatar.com/avatar/271ed240fc850235728b19d5b2b9f38c41ebdf0209c5b663f8b07060950489e6?d=mp&s=160"},"body":"On Fri, Aug 6, 2010 at 11:19 AM, Ævar Arnfjörð Bjarmason\n<avarab@gmail.com> wrote:\n> On Fri, Aug 6, 2010 at 15:18, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n>> Can you check what git-fsck has to say about the repos, on 32- &\n>> 64-bit machines?\n>\n> 32bit says:\n>\n>    error in commit 826a4f7721fe1c3963a733ecbc5422f05925af5d: invalid\n> author/committer line\n>\n> 64 bit doesn't give any warning at all.\n\nMeanwhile, on Fri, Aug 6, 2010 at 11:08 AM, Sverre Rabbelier\n<srabbelier@gmail.com> wrote:\n> On Fri, Aug 6, 2010 at 03:18, Jakub Narebski <jnareb@gmail.com> wrote:\n>> We can *store* it without problems, the problem is with\n>> *interpretation* by porcelain (and some plumbing).\n>\n> That's what I mean though, if the porcelain notices it's trying to\n> read in a date it can't interpret correctly it should warn the user of\n> this fact.\n\nSeems the error can be checked for when you ask, but I'd rather not\nhave git complain every time I use constitution.git.\n\nAside: I generated the time stamps with\n<http://github.com/schwern/y2038>,  which may be useful for\ncross-platform y2038 fixes.\n\n--Joel\n"},{"id":"147325","messageId":"H6efS0hBcmgNGLKlyPGmiuLIrxCvE4xIoIvXe6hvCJ0@cipher.nrlssc.navy.mil","threadId":"24605","inReplyTo":"AANLkTinXtjn7=9jRNmv4zhhPiy3NVOca0gY9dkYCUhY7@mail.gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Brandon Casey","fromEmail":"brandon.casey.ctr@nrlssc.navy.mil","sentAt":"2010-08-06T16:00:29Z","receivedAt":"2010-08-06T16:00:29Z","isPatch":false,"sender":{"key":"brandon.casey.ctr@nrlssc.navy.mil","avatar":null},"body":"Ævar Arnfjörð Bjarmason wrote:\n> On Fri, Aug 6, 2010 at 15:18, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n>> On Thu, Aug 5, 2010 at 5:58 PM, Ævar Arnfjörð Bjarmason\n>> <avarab@gmail.com> wrote:\n>>> On Thu, Aug 5, 2010 at 21:37, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n>>>> It's up, at <http://github.com/jcsalomon/constitution>, with one commit.\n>>>>\n>>>> I'm curious to find out if folks with 64-bit time_t get the correct\n>>>> author and commit times.\n>>> On 32bit:\n>>>\n>>> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n>>> Author: The Philadelphia Convention <>\n>>> Date:   Wed Dec 31 19:59:59 1969 -0400\n>>>\n>>> On 64bit:\n>>>\n>>> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n>>> Author: The Philadelphia Convention <>\n>>> Date:   Mon Sep 17 13:00:00 1787 -0400\n>> Cool, it works!  (The 13:00 should have been 12:00, but there's some\n>> DST weirdness at work.)\n>>\n>> Can you check what git-fsck has to say about the repos, on 32- &\n>> 64-bit machines?\n> \n> 32bit says:\n> \n>     error in commit 826a4f7721fe1c3963a733ecbc5422f05925af5d: invalid\n> author/committer line\n> \n> 64 bit doesn't give any warning at all.\n\nI don't think you're using the latest git.\n\nI get this on 64 bit:\n\n   error in commit 826a4f7721fe1c3963a733ecbc5422f05925af5d: invalid author/committer line - bad date\n\nThis is triggered by the negative sign '-' in front of the time\nfield which is not one of 0123456789.  See fsck.c line 244.\n\n-brandon\n"},{"id":"147326","messageId":"fGxsOXuy8990l2eOzf2k3cXF066OSIj50KBNkGGWXJhFoVG_B5MV_Q@cipher.nrlssc.navy.mil","threadId":"24605","inReplyTo":"AANLkTikJP2d5_pA+RcQeToE+RGW0oBhcZyghLfqDoJ8E@mail.gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Brandon Casey","fromEmail":"brandon.casey.ctr@nrlssc.navy.mil","sentAt":"2010-08-06T16:44:00Z","receivedAt":"2010-08-06T16:44:00Z","isPatch":false,"sender":{"key":"brandon.casey.ctr@nrlssc.navy.mil","avatar":null},"body":"Joel C. Salomon wrote:\n> On Thu, Aug 5, 2010 at 5:58 PM, Ævar Arnfjörð Bjarmason\n> <avarab@gmail.com> wrote:\n>> On Thu, Aug 5, 2010 at 21:37, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n>>> It's up, at <http://github.com/jcsalomon/constitution>, with one commit.\n>>>\n>>> I'm curious to find out if folks with 64-bit time_t get the correct\n>>> author and commit times.\n>> On 32bit:\n>>\n>> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n>> Author: The Philadelphia Convention <>\n>> Date:   Wed Dec 31 19:59:59 1969 -0400\n>>\n>> On 64bit:\n>>\n>> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n>> Author: The Philadelphia Convention <>\n>> Date:   Mon Sep 17 13:00:00 1787 -0400\n> \n> Cool, it works!  (The 13:00 should have been 12:00, but there's some\n> DST weirdness at work.)\n\nSomething other than the fact that -0400 should be -0500?\nOr are you talking about an issue with the software you are using to\ncreate the dates?\n\n-brandon\n"},{"id":"147327","messageId":"AANLkTi=twbd=nHrDOnPjcBUdHEa=xkGGC6uqGdjSid+B@mail.gmail.com","threadId":"24605","inReplyTo":"H6efS0hBcmgNGLKlyPGmiuLIrxCvE4xIoIvXe6hvCJ0@cipher.nrlssc.navy.mil","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2010-08-06T16:50:29Z","receivedAt":"2010-08-06T16:50:29Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"On Fri, Aug 6, 2010 at 16:00, Brandon Casey\n<brandon.casey.ctr@nrlssc.navy.mil> wrote:\n> Ævar Arnfjörð Bjarmason wrote:\n>> On Fri, Aug 6, 2010 at 15:18, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n>>> On Thu, Aug 5, 2010 at 5:58 PM, Ævar Arnfjörð Bjarmason\n>>> <avarab@gmail.com> wrote:\n>>>> On Thu, Aug 5, 2010 at 21:37, Joel C. Salomon <joelcsalomon@gmail.com> wrote:\n>>>>> It's up, at <http://github.com/jcsalomon/constitution>, with one commit.\n>>>>>\n>>>>> I'm curious to find out if folks with 64-bit time_t get the correct\n>>>>> author and commit times.\n>>>> On 32bit:\n>>>>\n>>>> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n>>>> Author: The Philadelphia Convention <>\n>>>> Date:   Wed Dec 31 19:59:59 1969 -0400\n>>>>\n>>>> On 64bit:\n>>>>\n>>>> commit 826a4f7721fe1c3963a733ecbc5422f05925af5d\n>>>> Author: The Philadelphia Convention <>\n>>>> Date:   Mon Sep 17 13:00:00 1787 -0400\n>>> Cool, it works!  (The 13:00 should have been 12:00, but there's some\n>>> DST weirdness at work.)\n>>>\n>>> Can you check what git-fsck has to say about the repos, on 32- &\n>>> 64-bit machines?\n>>\n>> 32bit says:\n>>\n>>     error in commit 826a4f7721fe1c3963a733ecbc5422f05925af5d: invalid\n>> author/committer line\n>>\n>> 64 bit doesn't give any warning at all.\n>\n> I don't think you're using the latest git.\n\nGuilty as charged. It's a Debian 1.7.1 git.\n\n> I get this on 64 bit:\n>\n>   error in commit 826a4f7721fe1c3963a733ecbc5422f05925af5d: invalid author/committer line - bad date\n>\n> This is triggered by the negative sign '-' in front of the time\n> field which is not one of 0123456789.  See fsck.c line 244.\n>\n> -brandon\n>\n"},{"id":"147413","messageId":"4C5E28AF.7010809@gmail.com","threadId":"24605","inReplyTo":"fGxsOXuy8990l2eOzf2k3cXF066OSIj50KBNkGGWXJhFoVG_B5MV_Q@cipher.nrlssc.navy.mil","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Joel C. Salomon","fromEmail":"joelcsalomon@gmail.com","sentAt":"2010-08-08T03:46:55Z","receivedAt":"2010-08-08T03:46:55Z","isPatch":false,"sender":{"key":"joelcsalomon@gmail.com","avatar":"https://gravatar.com/avatar/271ed240fc850235728b19d5b2b9f38c41ebdf0209c5b663f8b07060950489e6?d=mp&s=160"},"body":"On 08/06/2010 12:44 PM, Brandon Casey wrote:\n> Joel C. Salomon wrote:\n>> Cool, it works!  (The 13:00 should have been 12:00, but there's some\n>> DST weirdness at work.)\n> \n> Something other than the fact that -0400 should be -0500?\n\nNo, that's probably it; I'd overlooked the time-zone specifier.  Thanks.\n\n--Joel\n"},{"id":"147415","messageId":"DEBA236E-B6E8-435F-AC8C-1FC4AC69AD3C@gmail.com","threadId":"24605","inReplyTo":"4C5E28AF.7010809@gmail.com","subject":"Re: Back-dating commits--way back--for constitution.git","fromName":"Joshua Juran","fromEmail":"jjuran@gmail.com","sentAt":"2010-08-08T04:11:30Z","receivedAt":"2010-08-08T04:11:30Z","isPatch":false,"sender":{"key":"jjuran@gmail.com","avatar":null},"body":"On Aug 7, 2010, at 8:46 PM, Joel C. Salomon wrote:\n\n> On 08/06/2010 12:44 PM, Brandon Casey wrote:\n>> Joel C. Salomon wrote:\n>>> Cool, it works!  (The 13:00 should have been 12:00, but there's some\n>>> DST weirdness at work.)\n>>\n>> Something other than the fact that -0400 should be -0500?\n>\n> No, that's probably it; I'd overlooked the time-zone specifier.   \n> Thanks.\n\nDaylight Saving Time wasn't adopted in the US until 1918, so all  \nEastern times before then should be displayed as -500, regardless of  \nthe time of year.\n\nhttp://en.wikipedia.org/wiki/Daylight_saving_time\n\nJosh\n"}]}