Git: LOC adicionado e removido

Você já se perguntou quanto código escrevemos e removemos nos últimos 3 meses?

Eu fiz. E como eu amo o Git, também gosto do Awk. Eu descobri que poderíamos usar ambos para obter os dados que desejamos.

git log --numstat --pretty="%H" --since="3 months ago" --until="now"  | awk 'NF==3 {if ( ! match($3, /.(css|js)$/) ) { plus+=$1; minus+=$2} } END {printf("+%d, -%dn", plus, minus)}'

Para os curiosos sobre o que está acontecendo lá:

git log --numstat --pretty="%H"

Usamos git-log para nos dar as linhas que foram alteradas em cada arquivo por commit. O formato é basicamente:

# # file_name.txt
# # file_name.txt
HASHCODE

Fazemos o git gerar os arquivos que foram alterados (adicionados, removidos e arquivo) por commit.

--since="3 months ago" --until="now" 

Definimos um intervalo de tempo.

awk 'NF==3

Queremos apenas analisar as linhas que têm 3 campos (veja o formato acima).

{if ( ! match($3, /.(css|js)$/) ) { 

Filtre arquivos, com um RegEx.

plus+=$1; minus+=$2} } END 

Adicione os números fornecidos às variáveis ​​de mais e menos.

{printf("+%d, -%dn", plus, minus)}'

Produza os totais.