这篇文章涉及到单词计数,但我认为它也适用于在存储库中运行任何程序。我正在进行一个写作项目,后来才意识到想要在每次提交后通过编程方式生成单词计数,只针对tex文件。但是,如何获取整个项目的计数?我找不到简单的方法,所以这就是我要问的问题。
我的解决方案是自动化手动检出项目生命周期内每个提交的分支,并运行我的小型shell/sed/perl脚本以获取日期和单词计数:
我的解决方案是自动化手动检出项目生命周期内每个提交的分支,并运行我的小型shell/sed/perl脚本以获取日期和单词计数:
#!/usr/bin/env perl
use strict;
use warnings;
use 5.014;
use App::gh::Git;
use IPC::System::Simple qw(capture);
my $repo = Git->repository( Directory => '/home/amiri/MyProject/.git' );
my @commits
= reverse $repo->command( 'rev-list', '--all', '--date', 'short' );
my $command
= qq{find /home/amiri/MyProject -name "*.tex" | xargs wc -w | grep total | sed 's/[a-zA-Z[:space:]]//g'};
my $command2
= q{git log | grep "Date:" | sed -n 1p | perl -pi -e "s/^Date:\s+//g" | perl -pi -e "s/2011 -\d+$/UTC 2011/g"};
for my $commit (@commits) {
$repo->command( "checkout", "-b", "$commit", "$commit" );
my $count = capture($command);
my $date = capture($command2);
chomp $date;
say "$date,$count";
$repo->command( "checkout", "master" );
$repo->command( 'branch', "-d", $commit );
}
所以,这个方法可以工作,但我总觉得有更好的方式来实现它?它看起来有点不太优雅。