I'm determined not to be beaten on this git stuff, so I think a change of tack is in order.

There is a pure java implementation of git, called jgit, which I've used to download the repo.  I've added in some proxy code so it should give us another angle of attack.

It might take some fiddling to get working - I've got time on Wed and Thurs this week (assuming we don't go into full lockdown tonight) for a call?

Dependency for build.gradle is:
compile 'org.eclipse.jgit:org.eclipse.jgit:'

Here is the test code, just create this class and fill out the details:

package com.marketstreamer.nordea.util.git;

import com.logginghub.utils.logging.Logger;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.TextProgressMonitor;
import org.eclipse.jgit.transport.CredentialsProvider;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.SocketAddress;
import java.net.URI;
import java.util.Collections;
import java.util.List;

public class JGitTest {
    private static final Logger logger = Logger.getLoggerFor(JGitTest.class);
    public static void main(String[] args) throws GitAPIException {

        PrintWriter writer = new PrintWriter(System.out);
        File file = new File("./git_test/");

        logger.info("Cloning to '{}'", file.getAbsolutePath());

        // these are the values I use to log in to bitbucket
        String username = "james@marketstreamer.com";
        String password = "password";

        // put your proxy settings here
        String proxyIp = "";
        int proxyPort = 12345;

        String proxyUsername = "proxyUsername";
        String proxyPassword = "proxyPassword";

        Authenticator.setDefault(new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(proxyUsername, proxyPassword.toCharArray());

        ProxySelector.setDefault(new ProxySelector() {
            final ProxySelector delegate = ProxySelector.getDefault();

            public List select(URI uri) {
                return Collections.singletonList(new Proxy(Proxy.Type.HTTP, InetSocketAddress.createUnresolved(proxyIp, proxyPort)));

            public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
                if (uri == null || sa == null || ioe == null) {
                    throw new IllegalArgumentException("Arguments can't be null.");

        CredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password);

        TextProgressMonitor textProgressMonitor = new TextProgressMonitor(writer);