@@ -52,7 +52,14 @@ public virtual IEnumerable<Reference> ListReferences(Remote remote)
5252 {
5353 Ensure . ArgumentNotNull ( remote , "remote" ) ;
5454
55- return ListReferencesInternal ( remote . Url , null ) ;
55+ return ListReferencesInternal ( remote . Url , null , new ProxyOptions ( ) ) ;
56+ }
57+
58+ public virtual IEnumerable < Reference > ListReferences ( Remote remote , ProxyOptions proxyOptions )
59+ {
60+ Ensure . ArgumentNotNull ( remote , "remote" ) ;
61+
62+ return ListReferencesInternal ( remote . Url , null , proxyOptions ) ;
5663 }
5764
5865 /// <summary>
@@ -72,7 +79,15 @@ public virtual IEnumerable<Reference> ListReferences(Remote remote, CredentialsH
7279 Ensure . ArgumentNotNull ( remote , "remote" ) ;
7380 Ensure . ArgumentNotNull ( credentialsProvider , "credentialsProvider" ) ;
7481
75- return ListReferencesInternal ( remote . Url , credentialsProvider ) ;
82+ return ListReferencesInternal ( remote . Url , credentialsProvider , new ProxyOptions ( ) ) ;
83+ }
84+
85+ public virtual IEnumerable < Reference > ListReferences ( Remote remote , CredentialsHandler credentialsProvider , ProxyOptions proxyOptions )
86+ {
87+ Ensure . ArgumentNotNull ( remote , "remote" ) ;
88+ Ensure . ArgumentNotNull ( credentialsProvider , "credentialsProvider" ) ;
89+
90+ return ListReferencesInternal ( remote . Url , credentialsProvider , proxyOptions ) ;
7691 }
7792
7893 /// <summary>
@@ -90,7 +105,14 @@ public virtual IEnumerable<Reference> ListReferences(string url)
90105 {
91106 Ensure . ArgumentNotNull ( url , "url" ) ;
92107
93- return ListReferencesInternal ( url , null ) ;
108+ return ListReferencesInternal ( url , null , new ProxyOptions ( ) ) ;
109+ }
110+
111+ public virtual IEnumerable < Reference > ListReferences ( string url , ProxyOptions proxyOptions )
112+ {
113+ Ensure . ArgumentNotNull ( url , "url" ) ;
114+
115+ return ListReferencesInternal ( url , null , proxyOptions ) ;
94116 }
95117
96118 /// <summary>
@@ -110,25 +132,36 @@ public virtual IEnumerable<Reference> ListReferences(string url, CredentialsHand
110132 Ensure . ArgumentNotNull ( url , "url" ) ;
111133 Ensure . ArgumentNotNull ( credentialsProvider , "credentialsProvider" ) ;
112134
113- return ListReferencesInternal ( url , credentialsProvider ) ;
135+ return ListReferencesInternal ( url , credentialsProvider , new ProxyOptions ( ) ) ;
114136 }
115137
116- private IEnumerable < Reference > ListReferencesInternal ( string url , CredentialsHandler credentialsProvider )
138+ public virtual IEnumerable < Reference > ListReferences ( string url , CredentialsHandler credentialsProvider , ProxyOptions proxyOptions )
117139 {
118- using ( RemoteHandle remoteHandle = BuildRemoteHandle ( repository . Handle , url ) )
119- {
120- GitRemoteCallbacks gitCallbacks = new GitRemoteCallbacks { version = 1 } ;
121- GitProxyOptions proxyOptions = new GitProxyOptions { Version = 1 } ;
140+ Ensure . ArgumentNotNull ( url , "url" ) ;
141+ Ensure . ArgumentNotNull ( credentialsProvider , "credentialsProvider" ) ;
122142
123- if ( credentialsProvider != null )
124- {
125- var callbacks = new RemoteCallbacks ( credentialsProvider ) ;
126- gitCallbacks = callbacks . GenerateCallbacks ( ) ;
127- }
143+ return ListReferencesInternal ( url , credentialsProvider , new ProxyOptions ( ) ) ;
144+ }
128145
129- Proxy . git_remote_connect ( remoteHandle , GitDirection . Fetch , ref gitCallbacks , ref proxyOptions ) ;
130- return Proxy . git_remote_ls ( repository , remoteHandle ) ;
146+ private IEnumerable < Reference > ListReferencesInternal ( string url , CredentialsHandler credentialsProvider , ProxyOptions proxyOptions )
147+ {
148+ proxyOptions ??= new ( ) ;
149+
150+ using RemoteHandle remoteHandle = BuildRemoteHandle ( repository . Handle , url ) ;
151+ using var proxyOptionsWrapper = new GitProxyOptionsWrapper ( proxyOptions . CreateGitProxyOptions ( ) ) ;
152+
153+ GitRemoteCallbacks gitCallbacks = new GitRemoteCallbacks { version = 1 } ;
154+
155+ if ( credentialsProvider != null )
156+ {
157+ var callbacks = new RemoteCallbacks ( credentialsProvider ) ;
158+ gitCallbacks = callbacks . GenerateCallbacks ( ) ;
131159 }
160+
161+ var gitProxyOptions = proxyOptionsWrapper . Options ;
162+
163+ Proxy . git_remote_connect ( remoteHandle , GitDirection . Fetch , ref gitCallbacks , ref gitProxyOptions ) ;
164+ return Proxy . git_remote_ls ( repository , remoteHandle ) ;
132165 }
133166
134167 static RemoteHandle BuildRemoteHandle ( RepositoryHandle repoHandle , string url )
@@ -375,7 +408,7 @@ public virtual void Push(Remote remote, IEnumerable<string> pushRefSpecs, PushOp
375408 var gitPushOptions = pushOptionsWrapper . Options ;
376409 gitPushOptions . PackbuilderDegreeOfParallelism = pushOptions . PackbuilderDegreeOfParallelism ;
377410 gitPushOptions . RemoteCallbacks = gitCallbacks ;
378- gitPushOptions . ProxyOptions = new GitProxyOptions { Version = 1 } ;
411+ gitPushOptions . ProxyOptions = pushOptions . ProxyOptions . CreateGitProxyOptions ( ) ;
379412
380413 // If there are custom headers, create a managed string array.
381414 if ( pushOptions . CustomHeaders != null && pushOptions . CustomHeaders . Length > 0 )
0 commit comments