23/04/2024

Consultando o Git, usando Python

Sempre digo que os repositórios são as “redes sociais” dos desenvolvedores. Nos repositórios, desenvolvedores compartilham código, acessam o código de outras pessoas. Mais do que isso, em uma organização de engenharia, repositórios são a “fonte da verdade”.

Recentemente, desenvolvi um notebook para que os consultores da EximiaCo fizessem análises sobre repositórios. A ideia era identificar arquivos modificados com maior frequência e os contribuidores mais ativos. Para isso, utilizei uma biblioteca, bem bacana, chamada GitPython.

Python
! pip install GitPython --quiet

Abaixo uma método de apoio que retorna a relação de modificações em arquivos realizadas em um repositório nos últimos três meses.

Python
import git
from datetime import datetime, timedelta

def get_commits_last_three_months(repo_path, branch_name):
    repo = git.Repo(repo_path)
    three_months_ago = datetime.now() - timedelta(days=90)
    
    commits = []

    # Iterar sobre os commits na branch especificada
    for commit in repo.iter_commits(branch_name, since=three_months_ago.isoformat()):
        for file_stat in commit.stats.files.items():
            file_name, stats = file_stat
            entry = safe_get(commit.tree, file_name)
            lines = entry.data_stream.read().count(b'n') + 1 if entry else 0
            commit_info = {
                'sha': commit.hexsha,
                'author': commit.author.name,
                'file': file_name,
                'changes': stats['lines'],
                'insertions' : stats['insertions'],
                'deletions': stats['deletions'],
                'bytes': entry.size if entry else 0,
                'lines': lines
            }
            commits.append(commit_info)
            
    return commits

O código em si é bastante simples. Além das informações que a própria biblioteca fornece, resolvi calcular também o número de linhas de cada arquivo em um commit específico.

A ideia completa de como utilizo esse código está no notebook.

Deixe seu comentário

Subscribe
Notify of
0 Comentários
Oldest
Newest Most Voted
Feedbacks interativos
Ver todos os comentários

Últimos posts

0
Quero saber a sua opinião, deixe seu comentáriox

Inscrição realizada com sucesso!

No dia da masterclass você receberá um e-mail com um link para acompanhar a aula ao vivo. Até lá!

A sua subscrição foi enviada com sucesso!

Aguarde, em breve entraremos em contato com você para lhe fornecer mais informações sobre como participar da mentoria.

Crie sua conta

Preencha os dados para iniciar o seu cadastro no plano anual do Clube de Estudos:

Crie sua conta

Preencha os dados para iniciar o seu cadastro no plano mensal do Clube de Estudos:

× Precisa de ajuda?