`Proxy.git_remote_connect()` hides exceptions · Issue #1912 · libgit2/libgit2sharp · GitHub
Skip to content

Proxy.git_remote_connect() hides exceptions #1912

Description

@YuKitsune

I've noticed when calling Repository.ListRemoteReferences with a URL that doesn't point to a valid git repo, I get a fairly unhelpful error:

LibGit2Sharp.LibGit2SharpException: this remote has never connected
   at LibGit2Sharp.Core.Ensure.HandleError(Int32 result)
   at LibGit2Sharp.Core.Proxy.git_remote_ls(Repository repository, RemoteHandle remote)
   at LibGit2Sharp.Repository.ListRemoteReferences(String url, CredentialsHandler credentialsProvider)
   at LibGit2Sharp.Repository.ListRemoteReferences(String url)
   at LibGit2SharpScratchpad.Program.Main(String[] args)

I did some digging and noticed in Repository.ListRemoteReferences(string, CredentialsHandler), there is a call to git_remote_connect, then git_remote_ls. In git_remote_connect, if an exception is thrown (E.g: from the call to Ensure.ZeroResult(res)), it's caught and then ignored:

It looks like this was introduced in this commit: 6bc517f

Because this doesn't re-throw the exception, git_remote_ls gets given a null transport, and thus throws the this remote has never connected error.

I would've expected this to re-throw the exception after disposing of the custom headers.

Seems like an easy fix and I'm happy to send through a PR, just wondering if this was intentional or a legitimate bug.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions