unexpected EOF when trying to fetch from remote

Ouverte
#2,080 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
25/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
csharp, git
Domaine
devtools, networking

Piste de recherche

Commencez par Commands.Fetch et FetchOptions, puis suivez la manière dont la requête fetch annonce des capacités telles que multi_ack_detailed, side-band-64k et include-tag. Comparez-la à la requête OS Git fonctionnelle et déterminez si LibGit2Sharp permet de contrôler ces options ; le travail est terminé lorsqu’une configuration prise en charge ou une incompatibilité de protocole reproductible avec Bitbucket 7.21.4 est identifiée.

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

Description

I'm having an issue with a remote repo hosted on a BitBucket v7.21.4. The clone command works just fine, but when I try to fetch a particular branch if fails with LibGit2Sharp.LibGit2SharpException: unexpected EOF.
The issue is constantly reproducible.

Reproduction steps

Example code:

        using var repo = new Repository(repositoryPath);
        var fetchOpts = new FetchOptions();
        fetchOpts.CertificateCheck = (_,_,_) => true;
        fetchOpts.CredentialsProvider = (_, _, _) => new UsernamePasswordCredentials() { Username = remoteUser, Password = remotePassword };
        fetchOpts.Prune = true;
        fetchOpts.TagFetchMode = TagFetchMode.None;
        var remote = repo.Network.Remotes["origin"];
        Commands.Fetch(repo, remote.Name, [$"+refs/heads/{remoteBranch}:refs/remotes/{remote.Name}/{remoteBranch}"], fetchOpts, null);
Expected behavior

Fetch to complete successfully.

Actual behavior
Unhandled exception. LibGit2Sharp.LibGit2SharpException: unexpected EOF

Below is the trace:

Debug: Sending POST request to https://<repourl>/scm/<proj>/<repo>.git/git-upload-pack
Trace: Sending request:
POST /scm/<proj>/<repo>.git/git-upload-pack HTTP/1.1
User-Agent: git/2.0 (libgit2 1.7.1)
Host: <host>
Accept: application/x-git-upload-pack-result
Content-Type: application/x-git-upload-pack-request
Content-Length: 1124
Authorization: Basic <auth>


Trace: Sending request:
0074want 3edd78a0fa98c3c2361088051ef762b8ae617a7c multi_ack_detailed side-band-64k include-tag thin-pack ofs-delta 
00000032have 6bb975022c21ceb358e9686ec47f62f0df5ab76b
0032have 19339ffb0a1a4a31c1ed445155ff5a0819a90404
...
0032have 4fcfbe8283ab4d7df213d4aad49213e078579dd5
0000
Trace: Received:

Unhandled exception. LibGit2Sharp.LibGit2SharpException: unexpected EOF

Below is the the trace from the OS git client fetch from the same remote which works just fine:

$git fetch origin master
...
12:39:35.668070 pkt-line.c:80           packet:        fetch> command=fetch
12:39:35.668091 pkt-line.c:80           packet:        fetch> agent=git/2.39.2
12:39:35.668095 pkt-line.c:80           packet:        fetch> 0001
12:39:35.668098 pkt-line.c:80           packet:        fetch> thin-pack
12:39:35.668102 pkt-line.c:80           packet:        fetch> ofs-delta
12:39:35.668108 pkt-line.c:80           packet:        fetch> want 3edd78a0fa98c3c2361088051ef762b8ae617a7c
12:39:35.668119 pkt-line.c:80           packet:        fetch> have 6bb975022c21ceb358e9686ec47f62f0df5ab76b
...
12:39:35.668678 pkt-line.c:80           packet:        fetch> have 7bb74cc0c823352f64704ffcf72a1449d7fa355d
12:39:35.668683 pkt-line.c:80           packet:        fetch> 0000

I noticed that it sends only thin-pack and ofs-delta arguments as opposed to multi_ack_detailed side-band-64k include-tag thin-pack ofs-delta from libgit2sharp.
Is there a way to control this behavior with code?

Version of LibGit2Sharp (release number or SHA1)

Libgit2sharp v0.29.0

Operating system(s) tested; .NET runtime tested

.NET SDK:
Version: 8.0.101
Commit: 6eceda187b
Workload version: 8.0.100-manifests.69afb982

Runtime Environment:
OS Name: Mac OS X
OS Version: 14.3
OS Platform: Darwin
RID: osx-x64

Langage dominant
C#
Étoiles
3.5k
Forks
925
Métriques de merge des PR
Aucune PR mergée en 30 j

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.

Autres issues de libgit2/libgit2sharp

Toutes les issues de libgit2/libgit2sharp

Issues similaires

Plus d'issues C#

Recevez les nouvelles issues par e-mail

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