@@ -52,7 +52,14 @@ public virtual IEnumerable<Reference> ListReferences(Remote remote)
52
52
{
53
53
Ensure . ArgumentNotNull ( remote , "remote" ) ;
54
54
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 ) ;
56
63
}
57
64
58
65
/// <summary>
@@ -72,7 +79,15 @@ public virtual IEnumerable<Reference> ListReferences(Remote remote, CredentialsH
72
79
Ensure . ArgumentNotNull ( remote , "remote" ) ;
73
80
Ensure . ArgumentNotNull ( credentialsProvider , "credentialsProvider" ) ;
74
81
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 ) ;
76
91
}
77
92
78
93
/// <summary>
@@ -90,7 +105,14 @@ public virtual IEnumerable<Reference> ListReferences(string url)
90
105
{
91
106
Ensure . ArgumentNotNull ( url , "url" ) ;
92
107
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 ) ;
94
116
}
95
117
96
118
/// <summary>
@@ -110,25 +132,36 @@ public virtual IEnumerable<Reference> ListReferences(string url, CredentialsHand
110
132
Ensure . ArgumentNotNull ( url , "url" ) ;
111
133
Ensure . ArgumentNotNull ( credentialsProvider , "credentialsProvider" ) ;
112
134
113
- return ListReferencesInternal ( url , credentialsProvider ) ;
135
+ return ListReferencesInternal ( url , credentialsProvider , new ProxyOptions ( ) ) ;
114
136
}
115
137
116
- private IEnumerable < Reference > ListReferencesInternal ( string url , CredentialsHandler credentialsProvider )
138
+ public virtual IEnumerable < Reference > ListReferences ( string url , CredentialsHandler credentialsProvider , ProxyOptions proxyOptions )
117
139
{
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" ) ;
122
142
123
- if ( credentialsProvider != null )
124
- {
125
- var callbacks = new RemoteCallbacks ( credentialsProvider ) ;
126
- gitCallbacks = callbacks . GenerateCallbacks ( ) ;
127
- }
143
+ return ListReferencesInternal ( url , credentialsProvider , new ProxyOptions ( ) ) ;
144
+ }
128
145
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 ( ) ;
131
159
}
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 ) ;
132
165
}
133
166
134
167
static RemoteHandle BuildRemoteHandle ( RepositoryHandle repoHandle , string url )
@@ -375,7 +408,7 @@ public virtual void Push(Remote remote, IEnumerable<string> pushRefSpecs, PushOp
375
408
var gitPushOptions = pushOptionsWrapper . Options ;
376
409
gitPushOptions . PackbuilderDegreeOfParallelism = pushOptions . PackbuilderDegreeOfParallelism ;
377
410
gitPushOptions . RemoteCallbacks = gitCallbacks ;
378
- gitPushOptions . ProxyOptions = new GitProxyOptions { Version = 1 } ;
411
+ gitPushOptions . ProxyOptions = pushOptions . ProxyOptions . CreateGitProxyOptions ( ) ;
379
412
380
413
// If there are custom headers, create a managed string array.
381
414
if ( pushOptions . CustomHeaders != null && pushOptions . CustomHeaders . Length > 0 )
0 commit comments