threads / discuss / 12326

Correcting timestamps when importing archives to git

Subject: Correcting timestamps when importing archives to git

## tl;dr

3 messages between Feb 26, 2008 and Feb 26, 2008.

replies: 2people: 2as markdown or json

David Greaves· Feb 26, 2008, 11:45 UTC · lore
Hi
I recently converted a set of patches to a git repository.
In order to use the correct timestamps my script used a 'faketime' solution I
found here:
  http://www.code-wizards.com/projects/libfaketime/

I used a perl subroutine that takes a time (obtained by stat()ing the original patch or looking in logs) and then the normal 'system()' args.

sub faketime_system {
    my $time=shift;
$ENV{"LD_PRELOAD"}="/everything/devel/faketime/libfaketime-0.6/libfaketime.so.1";
    $ENV{"FAKETIME_FMT"}='%s';
    $ENV{'FAKETIME'}=$time;
    system @_;
    $ENV{"LD_PRELOAD"}="";
}
so:
	$time=(stat("$tarfile"))[9];
	faketime_system ($time, "tar xfj $tarfile");
or:
    $time=(stat("$patchfile"))[9];
    faketime_system ($time, "zcat $patchfile | patch -f -p1");
    faketime_system ($time, "git add .");
HTH someone else...
David
Johannes Schindelin· Feb 26, 2008, 12:17 UTC · re: David Greaves · lore

Re: Correcting timestamps when importing archives to git

Hi,
On Tue, 26 Feb 2008, David Greaves wrote:
Show 31 quoted lines
> I recently converted a set of patches to a git repository.
> 
> In order to use the correct timestamps my script used a 'faketime' 
> solution I found here:
>
>   http://www.code-wizards.com/projects/libfaketime/
> 
> I used a perl subroutine that takes a time (obtained by stat()ing the 
> original patch or looking in logs) and then the normal 'system()' args.
> 
> sub faketime_system {
>     my $time=shift;
> 
> $ENV{"LD_PRELOAD"}="/everything/devel/faketime/libfaketime-0.6/libfaketime.so.1";
>     $ENV{"FAKETIME_FMT"}='%s';
>     $ENV{'FAKETIME'}=$time;
>     system @_;
>     $ENV{"LD_PRELOAD"}="";
> }
> 
> 
> so:
> 	$time=(stat("$tarfile"))[9];
> 	faketime_system ($time, "tar xfj $tarfile");
> 
> or:
>     $time=(stat("$patchfile"))[9];
>     faketime_system ($time, "zcat $patchfile | patch -f -p1");
>     faketime_system ($time, "git add .");
> 
> HTH someone else...
Wow.  That is sure one of the most complicated ways to go about it.

IMO GIT_AUTHOR_DATE and GIT_COMMITTER_DATE (mentioned in Documentation/git.txt, and described in Documentation/git-commit-tree.txt) would have been the tools to use.

Hth, Dscho

David Greaves· Feb 26, 2008, 12:55 UTC · re: Johannes Schindelin · lore

Re: Correcting timestamps when importing archives to git

Johannes Schindelin wrote:
> 
> Wow.  That is sure one of the most complicated ways to go about it.

Depends. after checking the git pages for time arguments then spoofing the time is (was!) the most obvious way to do it IMO :) Thereafter it took a few seconds to google faketime, download and implement.

> IMO GIT_AUTHOR_DATE and GIT_COMMITTER_DATE (mentioned in 
> Documentation/git.txt, and described in Documentation/git-commit-tree.txt) 
> would have been the tools to use.

Indeed - I forgot all about those - and I wrote the first versions of those files IIRC!

The variables are not written about much more and didn't show up when I was googling for managing git timestamps/dates. Maybe they will now.

And - the whole point of the email was for the archives - so thanks for the reply and the reminder/better suggestion.

David

← back to recent threads