libgit2sharp icon indicating copy to clipboard operation
libgit2sharp copied to clipboard

Question: Getting http.proxy to work

Open pushad opened this issue 7 years ago • 8 comments

Hey guys,

I've got a repo set up at bitbucket. This repository is initialized locally with a reference to the http link provided from the site.

I am using LibGit2Sharp 0.23.1, and I am using the following to fetch from the remote server:

private bool fetch()
        {
            string logMessage = "";
            using (var repo = new Repository(settings.directory))
            {
                Remote remote = repo.Network.Remotes["origin"];
                IEnumerable<string> refSpecs = remote.FetchRefSpecs.Select(x => x.Specification);
                FetchOptions options = new FetchOptions();

                options.CredentialsProvider = getCredentials();
                Commands.Fetch(repo, remote.Name, refSpecs, options, logMessage);
            }
            Logger.debug(logMessage);
            return true;
        }

Inside config file of git I have the following added:

[http]
	proxy = http://<IP>:8888

I am using wireshark to sniff my outgoing packets and can confirm that using command-line git fetch, it is indeed using the configured proxy. Removing this setting from the config also confirms that it is not using the proxy. Also at my proxy server I can confirm that there is a connection going to bitbucket when fetching.

However when I use my code, which points to the same location where the repository is sitting at, it does not use the proxy at all. I don't see any packets going to the proxy server in my Wireshark instance, nor in the logs of my proxy server. It is indeed fetching, just directly to the server.

I've googled quite a bit, I've tried setting up environment proxy variable, setting up proxy in Internet Explorer, setting up proxy on remote only. None of them work with my client.

I'm guessing I've got something misconfigured, just not sure what.

Hopefully you guys can help me out!

pushad avatar Mar 23 '17 11:03 pushad

@pushad Taking a look at the code, I think there might be a problem here.

It looks like GitProxyOptions were added in 88cf9a7b8f1732ae8a2953816895989bb2ae9403, and they are being used in Commands.Fetch, as you can see here.

However, it appears that currently everywhere in the codebase, the GitProxyType of GitProxyOptions is always being initialized to 0, which is None. Looking at the libgit2 code for git_proxy_t, it appears that None disables using any proxies.

@ethomson Is there something I'm missing here in my analysis, or is LibGit2Sharp currently disabling working properly with proxies?

bording avatar Apr 11 '17 01:04 bording

Yes, it does look like this is disabling proxies... The default transport on Windows (WinHTTP) does not support proxies, IIRC, so this is basically a noop there. But turning on auto support would help when libgit2 itself is built with libcurl support.

ethomson avatar Apr 11 '17 16:04 ethomson

The default transport on Windows (WinHTTP) does not support proxies, IIRC

Really? That's unfortunate. Is that a limitation of how it's implemented in libgit2? AFAIK WinHTTP itself should support proxies.

bording avatar Apr 11 '17 22:04 bording

Thanks for the replies guys!

Seeing how it has stalled for now, are there any steps I can take to route libgit2sharp through a proxy anyways? Perhaps with use of different libraries, building with certain options enabled. Even third party applications could be considered.

Any pointers are greatly appreciated.

pushad avatar May 01 '17 08:05 pushad

It used to work with version 0.22, where http.proxy would be picked up. Might depend on the proxy authentication scheme to actually work.

lanfeust69 avatar Jun 22 '17 10:06 lanfeust69

any thoughts on timeline for fixing the issue?

plainionist avatar Feb 25 '18 15:02 plainionist

Also interested in hearing if this got resolved along with an example of how to set it?

cornerpirate avatar Apr 24 '18 16:04 cornerpirate

Is there any known workaround to actually get libgit2sharp to work with proxies? Besides having the correct .gitconfig I also tried setting ´HTTP(S)_PROXY` env variables, but also this didn't seem to work for me.

It's kinda hard to believe that this usecase is not working at all, it feels like alot of people should have this problem?

pfeigl avatar Sep 29 '21 07:09 pfeigl

We also have an use case to support a client running behind a proxy. Is there a possibility to get the PR from @jones-gareth in? Or any other solution possible?

vilasapj avatar Sep 04 '23 12:09 vilasapj

LibGit2Sharp 0.29.0 has been released, which adds proxy options to make proxies fully configurable.

bording avatar Dec 03 '23 21:12 bording