44using System . Reactive ;
55using System . Reactive . Linq ;
66using LibGit2Sharp ;
7- using System . Collections . Generic ;
87
98namespace GitHub . Services
109{
@@ -13,11 +12,15 @@ namespace GitHub.Services
1312 public class GitClient : IGitClient
1413 {
1514 readonly IGitHubCredentialProvider credentialProvider ;
15+ readonly PushOptions pushOptions ;
16+ readonly FetchOptions fetchOptions ;
1617
1718 [ ImportingConstructor ]
1819 public GitClient ( IGitHubCredentialProvider credentialProvider )
1920 {
2021 this . credentialProvider = credentialProvider ;
22+ pushOptions = new PushOptions { CredentialsProvider = credentialProvider . HandleCredentials } ;
23+ fetchOptions = new FetchOptions { CredentialsProvider = credentialProvider . HandleCredentials } ;
2124 }
2225
2326 public IObservable < Unit > Push ( IRepository repository , string branchName , string remoteName )
@@ -30,11 +33,7 @@ public IObservable<Unit> Push(IRepository repository, string branchName, string
3033 if ( repository . Head ? . Commits != null && repository . Head . Commits . Any ( ) )
3134 {
3235 var remote = repository . Network . Remotes [ remoteName ] ;
33- repository . Network . Push ( remote , "HEAD" , @"refs/heads/" + branchName ,
34- new PushOptions ( )
35- {
36- CredentialsProvider = credentialProvider . HandleCredentials
37- } ) ;
36+ repository . Network . Push ( remote , "HEAD" , @"refs/heads/" + branchName , pushOptions ) ;
3837 }
3938 return Observable . Return ( Unit . Default ) ;
4039 } ) ;
@@ -47,10 +46,7 @@ public IObservable<Unit> Fetch(IRepository repository, string remoteName)
4746 return Observable . Defer ( ( ) =>
4847 {
4948 var remote = repository . Network . Remotes [ remoteName ] ;
50- repository . Network . Fetch ( remote , new FetchOptions ( )
51- {
52- CredentialsProvider = credentialProvider . HandleCredentials
53- } ) ;
49+ repository . Network . Fetch ( remote , fetchOptions ) ;
5450 return Observable . Return ( Unit . Default ) ;
5551 } ) ;
5652 }
0 commit comments