#!/usr/bin/perl -w use strict; my $tree= ""; use IPC::Open2; use File::stat; my $FILES; my $mark= 1; my $stripdir= $ARGV[0]; sub fastimport_blobs ($); sub fastimport_blobs ($) { my $dirname= shift @_; opendir (my $dirhandle, $dirname); foreach (readdir $dirhandle) { next if /^\.\.?$/; next if /\.cmeta$/; next if /\.ibex.index$/; next if /\.ibex.index.data$/; next if /\.ev-summary$/; next if /\.ev-summary-meta$/; next if /\.notmuch$/; if (-d $dirname.'/'.$_) { print STDERR "Recursing into $_/ "; fastimport_blobs($dirname.'/'.$_); print STDERR "\n"; } else { my $sb= stat("$dirname/$_"); print FASTIMPORT "blob\n"; print FASTIMPORT "mark :$mark\n"; print FASTIMPORT "data ".($sb->size)."\n"; open FILEIN, "$dirname/$_"; my $content; sysread FILEIN, $content, $sb->size; close FILEIN; print FASTIMPORT $content; my $storedir= "$dirname/$_"; $storedir=~ s/^$stripdir//; $storedir=~ s/^\///; $FILES.="M 0644 :$mark $storedir\n"; $mark++; } } } open FASTIMPORT, "| git fast-import --date-format=rfc2822"; fastimport_blobs($ARGV[0]); print FASTIMPORT "commit refs/heads/master\n"; print FASTIMPORT "committer EvenLess ".`date -R`; print FASTIMPORT "data 11\n"; print FASTIMPORT "mail commit\n"; print FASTIMPORT $FILES; print FASTIMPORT "\n"; close FASTIMPORT;