update_submodules duplicates

Aberta
#792 6 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
32/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
git, python
Domínio
tooling

Direção de pesquisa

Comece com o exemplo get_submodules e com as chamadas repo.update_submodules e repo.lookup_submodule. Reproduza o layout aninhado em que Submodule A aparece mais de uma vez e, em seguida, inspecione como as atualizações repetidas são tratadas. O trabalho estará concluído quando a operação recursiva não travar mais com esse layout e o comportamento tiver sido verificado em relação ao cenário relatado.

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

Descrição

I'm trying to replicate git clone --recursive in pygit2, and this is the function I've come up with.

def get_submodules(repo, creds):
    submodules = repo.listall_submodules()
    repo.init_submodules(submodules=submodules)
    repo.update_submodules(submodules=submodules, callbacks=creds)
    for submodule_path in submodules:
        submodule = repo.lookup_submodule(submodule_path)
        sub_repo = submodule.open()
        get_submodules(sub_repo, creds)

The problem I'm having is that in certain circumstances, this will cause crashes. Let me paint the picture.

Master Repo

  1. Submodule A
  2. Submodule B
    2.1 Submodule A
    2.2 Submodule D
  3. Submodule C

When update_submodules attempts to run on Submodule A the second time, it crashes. Not completely sure how to get around this. Some repos are in this format, but I haven't found a workaround. Any thoughts?

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.