How to efficiently generating the diffstat?

Aberta
#894 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
20/100
Tipo de issue
Funcionalidade
Clareza
Precisa de esclarecimento
Status de atividade
Estagnada
Stack de tecnologia
git, python

Direção de pesquisa

Comece com o loop Python sobre self.__raw_commit.parents e os pontos de entrada tree.diff_to_tree e diff.stats; em seguida, compare seu objetivo com git log --stat. Determine se pygit2 ou libgit2 expõe uma maneira mais eficiente de obter inserções, exclusões e arquivos alterados; considera-se concluído quando a abordagem for identificada e produzir valores de diffstat equivalentes.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Hi,

I need some help to efficiently generating the diffstat. I would like to get the number of lines added and deleted from one commit to another, like the following command does:

git log --stat

I wrote the following code, but it is pretty slow.

for raw_parent in self.__raw_commit.parents:
    diff = self.__raw_commit.tree.diff_to_tree(raw_parent.tree)
    self._stats.insertions += diff.stats.insertions
    self._stats.deletions += diff.stats.deletions
    self._stats.files_changed += diff.stats.files_changed

Do you know a better way to capture this information?

Best regards,

Linguagem predominante
Python
Estrelas
1.7k
Forks
408
Merge médio
2d 57min
PRs com merge (30d)
7

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de libgit2/pygit2

Todas as issues de libgit2/pygit2

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.