libgit2 / libgit2/pygit2

checking to see if diffFile is a submodule.

Ouverte
#838 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Python
Étoiles
1.7k
Forks
408
Merge moyen
2 j 57 min
PR mergées (30 j)
7

Description

Is there a way to check to see if a diffFile is a submodule?

The repo that I'm getting my diff deltas from is bare so there's no working directory for Repository.lookup_submodule(path) or Repository.listall_submodules() to work with.

The main issue is when I try to get an added file via something like:

new_file = git_repo[delta.new_file.id]

I get the following key error.

Traceback (most recent call last):
  File "/Users/user/project/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/user/project/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/user/project/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/user/project/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/user/project/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users/user/project/repos/views.py", line 105, in get
    new_file = git_repo[delta.new_file.id]
  File "/Users/user/project/venv/lib/python3.7/site-packages/pygit2/repository.py", line 121, in __getitem__
    raise KeyError(key)
KeyError: ffeef8955335d0ec95f23c2fd75821672cf14bb9

If it's a submodule I don't need the contents. I just need to know that it's a submodule. Is there a general way to do this?

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par lire la gestion autour de delta.new_file.id et des APIs Repository.lookup_submodule(path) et Repository.listall_submodules(), en particulier pour les bare repositories. Vérifiez comment une entrée de diff identifie un sous-module sans charger son contenu. Le travail est terminé lorsqu’un moyen fiable de distinguer les entrées de sous-modules avant l’indexation du dépôt est documenté ou exposé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
git, python
Domaine
devtools
Type d'issue
Fonctionnalité
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.