33using System . Linq ;
44using System . Reactive ;
55using System . Reactive . Linq ;
6+ using System . Threading . Tasks ;
67using GitHub . Extensions ;
78using GitHub . Primitives ;
89using LibGit2Sharp ;
@@ -23,65 +24,61 @@ public GitClient(IGitHubCredentialProvider credentialProvider)
2324 fetchOptions = new FetchOptions { CredentialsProvider = credentialProvider . HandleCredentials } ;
2425 }
2526
26- public IObservable < Unit > Push ( IRepository repository , string branchName , string remoteName )
27+ public Task Push ( IRepository repository , string branchName , string remoteName )
2728 {
2829 Guard . ArgumentNotEmptyString ( branchName , nameof ( branchName ) ) ;
2930 Guard . ArgumentNotEmptyString ( remoteName , nameof ( remoteName ) ) ;
3031
31- return Observable . Defer ( ( ) =>
32+ return Task . Factory . StartNew ( ( ) =>
3233 {
3334 if ( repository . Head ? . Commits != null && repository . Head . Commits . Any ( ) )
3435 {
3536 var remote = repository . Network . Remotes [ remoteName ] ;
3637 repository . Network . Push ( remote , "HEAD" , @"refs/heads/" + branchName , pushOptions ) ;
3738 }
38- return Observable . Return ( Unit . Default ) ;
3939 } ) ;
4040 }
4141
42- public IObservable < Unit > Fetch ( IRepository repository , string remoteName )
42+ public Task Fetch ( IRepository repository , string remoteName )
4343 {
4444 Guard . ArgumentNotEmptyString ( remoteName , nameof ( remoteName ) ) ;
4545
46- return Observable . Defer ( ( ) =>
46+ return Task . Factory . StartNew ( ( ) =>
4747 {
4848 var remote = repository . Network . Remotes [ remoteName ] ;
4949 repository . Network . Fetch ( remote , fetchOptions ) ;
50- return Observable . Return ( Unit . Default ) ;
5150 } ) ;
5251 }
5352
54- public IObservable < Unit > Fetch ( IRepository repository , string remoteName , params string [ ] refspecs )
53+ public Task Fetch ( IRepository repository , string remoteName , params string [ ] refspecs )
5554 {
5655 Guard . ArgumentNotEmptyString ( remoteName , nameof ( remoteName ) ) ;
5756
58- return Observable . Defer ( ( ) =>
57+ return Task . Factory . StartNew ( ( ) =>
5958 {
6059 var remote = repository . Network . Remotes [ remoteName ] ;
6160 repository . Network . Fetch ( remote , refspecs , fetchOptions ) ;
62- return Observable . Return ( Unit . Default ) ;
6361 } ) ;
6462 }
6563
66- public IObservable < Unit > SetRemote ( IRepository repository , string remoteName , Uri url )
64+ public Task SetRemote ( IRepository repository , string remoteName , Uri url )
6765 {
6866 Guard . ArgumentNotEmptyString ( remoteName , nameof ( remoteName ) ) ;
6967
70- return Observable . Defer ( ( ) =>
68+ return Task . Factory . StartNew ( ( ) =>
7169 {
70+
7271 repository . Config . Set ( "remote." + remoteName + ".url" , url . ToString ( ) ) ;
7372 repository . Config . Set ( "remote." + remoteName + ".fetch" , "+refs/heads/*:refs/remotes/" + remoteName + "/*" ) ;
74-
75- return Observable . Return ( Unit . Default ) ;
7673 } ) ;
7774 }
7875
79- public IObservable < Unit > SetTrackingBranch ( IRepository repository , string branchName , string remoteName )
76+ public Task SetTrackingBranch ( IRepository repository , string branchName , string remoteName )
8077 {
8178 Guard . ArgumentNotEmptyString ( branchName , nameof ( branchName ) ) ;
8279 Guard . ArgumentNotEmptyString ( remoteName , nameof ( remoteName ) ) ;
8380
84- return Observable . Defer ( ( ) =>
81+ return Task . Factory . StartNew ( ( ) =>
8582 {
8683 var remoteBranchName = IsCanonical ( remoteName ) ? remoteName : "refs/remotes/" + remoteName + "/" + branchName ;
8784 var remoteBranch = repository . Branches [ remoteBranchName ] ;
@@ -92,21 +89,21 @@ public IObservable<Unit> SetTrackingBranch(IRepository repository, string branch
9289 var localBranch = repository . Branches [ localBranchName ] ;
9390 repository . Branches . Update ( localBranch , b => b . TrackedBranch = remoteBranch . CanonicalName ) ;
9491 }
95- return Observable . Return ( Unit . Default ) ;
9692 } ) ;
9793 }
9894
99- public IObservable < Remote > GetHttpRemote ( IRepository repo , string remote )
95+ public Task < Remote > GetHttpRemote ( IRepository repo , string remote )
10096 {
101- return Observable . Defer ( ( ) => Observable . Return ( GitService . GitServiceHelper . GetRemoteUri ( repo , remote ) ) )
102- . Select ( uri => new { Remote = uri . IsHypertextTransferProtocol ? remote : remote + "-http" , Uri = uri } )
103- . Select ( r =>
104- {
105- var ret = repo . Network . Remotes [ r . Remote ] ;
106- if ( ret == null )
107- ret = repo . Network . Remotes . Add ( r . Remote , UriString . ToUriString ( r . Uri . ToRepositoryUrl ( ) ) ) ;
108- return ret ;
109- } ) ;
97+ return Task . Factory . StartNew ( ( ) =>
98+ {
99+
100+ var uri = GitService . GitServiceHelper . GetRemoteUri ( repo , remote ) ;
101+ var remoteName = uri . IsHypertextTransferProtocol ? remote : remote + "-http" ;
102+ var ret = repo . Network . Remotes [ remoteName ] ;
103+ if ( ret == null )
104+ ret = repo . Network . Remotes . Add ( remoteName , UriString . ToUriString ( uri . ToRepositoryUrl ( ) ) ) ;
105+ return ret ;
106+ } ) ;
110107 }
111108
112109 static bool IsCanonical ( string s )
0 commit comments