]> pd.if.org Git - scripts/blob - git-slurp
rewrite git-slurp in perl
[scripts] / git-slurp
1 #!/usr/bin/perl
2
3 use File::Find;
4 use File::Find::Closures qw(find_regular_files);
5 use Git::Repository;
6 use Time::Stamp qw(gmstamp);
7
8 my ($want, $files) = find_regular_files();
9
10 my $author = shift;
11 $author = 'Unknown' unless defined $author;
12 my $email = shift;
13 $email = '<>' unless defined $email;
14
15 my $dir = shift;
16 $dir = '.' unless $dir;
17
18 File::Find::find($want, $dir);
19
20 my %ts;
21
22 foreach ($files->()) {
23         next if m|^\.git/|;
24         next if m|^git-slurp$|;
25         my $ts = gmstamp((stat $_)[9]);
26         push @{$ts{$ts}}, $_;
27 }
28
29 my $git = Git::Repository->new({
30                 env => {
31                         GIT_AUTHOR_EMAIL => $email,
32                         GIT_AUTHOR_NAME  => $author,
33                 },
34         }
35 );
36
37 print $git->work_tree, "\n";
38 foreach my $ts (sort { $a cmp $b } keys %ts) {
39         print "$ts @{$ts{$ts}}\n";
40         foreach my $file (@{$ts{$ts}}) {
41                 $git->run('add', $file);
42         }
43         $git->run('commit', '--date', $ts, '-m', "add files for $ts");
44 }