Оцените время, затраченное на проект Git с помощью grep

Нет журнала операций с файлами, если только вы явно настроили его. Создание журнала файловых операций необычно и снижает производительность.

Как hermancain предложил в комментарии, вы можете выполнить поиск в истории оболочки ( less ~ / .bash_history в конфигурации по умолчанию) и попытаться найти команду, которая удаляла или перемещала каталог. Это могла быть команда с подстановочными знаками, поэтому вы можете не найти фактическое имя каталога в истории, а только соответствующий ему шаблон подстановки.

Если каталог был перемещен или вы неправильно запомнили путь, попробуйте найти какой-нибудь файл , где какой-то файл - это имя файла, находившегося в этом каталоге, или даже его часть. имя.

Совет: поместите ваши точечные файлы в систему управления версиями .

1
19.01.2016, 16:43
1 ответ

Следующий код Perl должен вас очень заинтересовать. , очень близко к тому, что я думаю, вы хотите. Если вы не знакомы с Perl, вам необходимо установить модуль DateTime :: Format :: Strptime из CPAN ... cpan установить DateTime :: Format :: Strptime .

Затем выведите свой журнал git в файл git log> git.log .

После этого вставьте следующий код в файл, поместите файл журнала в тот же каталог и запустите его.

Не самый красивый и не самый эффективный код, но у меня было всего несколько минут, чтобы что-то собрать.

#!/usr/bin/perl
use warnings;
use strict;

use DateTime::Format::Strptime;

my $log = 'git.log';

open my $fh, '<', $log or die $!;

my %dates;
my @order;

while (<$fh>){
    if (/Date:\s+(.*?)(\d{2}:.*)/){
        push @order, $1 if ! $dates{$1};
        push @{ $dates{$1} }, "$1$2";
    }
}

my $letter = 'A';
my $total_time = DateTime::Duration->new;

for my $day (@order){

    my $start = $dates{$day}->[0];
    my $end   = $dates{$day}->[-1];

    my $parser = DateTime::Format::Strptime->new(
        pattern  => '%a %b %d %H:%M:%S %Y %z',
        on_error => 'croak',
    );

    my $dt1 = $parser->parse_datetime($start);
    my $dt2 = $parser->parse_datetime($end);

    my $total = $dt1 - $dt2;
    $total_time = $total_time + $total;

    print "$start\n$end\n";

    print "Total $letter:\t";
    print join ':', ($total->hours, $total->minutes, $total->seconds);
    print "\n\n";

    $letter++;
}

print "Total time overall: ";
print join ':', ($total_time->hours, $total_time->minutes, $total_time->seconds);
print "\n";
2
27.01.2020, 23:36

Теги

Похожие вопросы