@@ -8,12 +8,11 @@ namespace LibGit2Sharp
8
8
/// <summary>
9
9
/// Exposes properties of a remote that can be updated.
10
10
/// </summary>
11
- public class RemoteUpdater
11
+ public class RemoteUpdater : IDisposable
12
12
{
13
- private readonly Repository repo ;
14
- private readonly Remote remote ;
15
13
private readonly UpdatingCollection < string > fetchRefSpecs ;
16
14
private readonly UpdatingCollection < string > pushRefSpecs ;
15
+ private readonly RemoteSafeHandle remoteHandle ;
17
16
18
17
/// <summary>
19
18
/// Needed for mocking purposes.
@@ -26,45 +25,32 @@ internal RemoteUpdater(Repository repo, Remote remote)
26
25
Ensure . ArgumentNotNull ( repo , "repo" ) ;
27
26
Ensure . ArgumentNotNull ( remote , "remote" ) ;
28
27
29
- this . repo = repo ;
30
- this . remote = remote ;
31
-
32
28
fetchRefSpecs = new UpdatingCollection < string > ( GetFetchRefSpecs , SetFetchRefSpecs ) ;
33
29
pushRefSpecs = new UpdatingCollection < string > ( GetPushRefSpecs , SetPushRefSpecs ) ;
30
+
31
+ remoteHandle = Proxy . git_remote_load ( repo . Handle , remote . Name , true ) ;
34
32
}
35
33
36
34
private IEnumerable < string > GetFetchRefSpecs ( )
37
35
{
38
- using ( RemoteSafeHandle remoteHandle = Proxy . git_remote_load ( repo . Handle , remote . Name , true ) )
39
- {
40
- return Proxy . git_remote_get_fetch_refspecs ( remoteHandle ) ;
41
- }
36
+ return Proxy . git_remote_get_fetch_refspecs ( remoteHandle ) ;
42
37
}
43
38
44
39
private void SetFetchRefSpecs ( IEnumerable < string > value )
45
40
{
46
- using ( RemoteSafeHandle remoteHandle = Proxy . git_remote_load ( repo . Handle , remote . Name , true ) )
47
- {
48
- Proxy . git_remote_set_fetch_refspecs ( remoteHandle , value ) ;
49
- Proxy . git_remote_save ( remoteHandle ) ;
50
- }
41
+ Proxy . git_remote_set_fetch_refspecs ( remoteHandle , value ) ;
42
+ Proxy . git_remote_save ( remoteHandle ) ;
51
43
}
52
44
53
45
private IEnumerable < string > GetPushRefSpecs ( )
54
46
{
55
- using ( RemoteSafeHandle remoteHandle = Proxy . git_remote_load ( repo . Handle , remote . Name , true ) )
56
- {
57
- return Proxy . git_remote_get_push_refspecs ( remoteHandle ) ;
58
- }
47
+ return Proxy . git_remote_get_push_refspecs ( remoteHandle ) ;
59
48
}
60
49
61
50
private void SetPushRefSpecs ( IEnumerable < string > value )
62
51
{
63
- using ( RemoteSafeHandle remoteHandle = Proxy . git_remote_load ( repo . Handle , remote . Name , true ) )
64
- {
65
- Proxy . git_remote_set_push_refspecs ( remoteHandle , value ) ;
66
- Proxy . git_remote_save ( remoteHandle ) ;
67
- }
52
+ Proxy . git_remote_set_push_refspecs ( remoteHandle , value ) ;
53
+ Proxy . git_remote_save ( remoteHandle ) ;
68
54
}
69
55
70
56
/// <summary>
@@ -74,11 +60,8 @@ public virtual TagFetchMode TagFetchMode
74
60
{
75
61
set
76
62
{
77
- using ( RemoteSafeHandle remoteHandle = Proxy . git_remote_load ( repo . Handle , remote . Name , true ) )
78
- {
79
- Proxy . git_remote_set_autotag ( remoteHandle , value ) ;
80
- Proxy . git_remote_save ( remoteHandle ) ;
81
- }
63
+ Proxy . git_remote_set_autotag ( remoteHandle , value ) ;
64
+ Proxy . git_remote_save ( remoteHandle ) ;
82
65
}
83
66
}
84
67
@@ -89,11 +72,8 @@ public virtual string Url
89
72
{
90
73
set
91
74
{
92
- using ( RemoteSafeHandle remoteHandle = Proxy . git_remote_load ( repo . Handle , remote . Name , true ) )
93
- {
94
- Proxy . git_remote_set_url ( remoteHandle , value ) ;
95
- Proxy . git_remote_save ( remoteHandle ) ;
96
- }
75
+ Proxy . git_remote_set_url ( remoteHandle , value ) ;
76
+ Proxy . git_remote_save ( remoteHandle ) ;
97
77
}
98
78
}
99
79
@@ -195,5 +175,10 @@ private void Save()
195
175
setter ( list . Value ) ;
196
176
}
197
177
}
178
+
179
+ public void Dispose ( )
180
+ {
181
+ remoteHandle . Dispose ( ) ;
182
+ }
198
183
}
199
184
}
0 commit comments