@@ -58,39 +58,9 @@ internal RepositoryStatus(Repository repo, StatusOptions options)
58
58
{
59
59
statusEntries = new List < StatusEntry > ( ) ;
60
60
61
- var gitOptions = new GitStatusOptions
61
+ using ( GitStatusOptions coreOptions = CreateStatusOptions ( options ?? new StatusOptions ( ) ) )
62
62
{
63
- Version = 1 ,
64
- Show = ( GitStatusShow ) options . Show ,
65
- Flags =
66
- GitStatusOptionFlags . IncludeIgnored |
67
- GitStatusOptionFlags . IncludeUntracked |
68
- GitStatusOptionFlags . RecurseUntrackedDirs ,
69
- } ;
70
-
71
- if ( options != null && options . DetectRenamesInIndex )
72
- {
73
- gitOptions . Flags |=
74
- GitStatusOptionFlags . RenamesHeadToIndex |
75
- GitStatusOptionFlags . RenamesFromRewrites ;
76
- }
77
-
78
- if ( options != null && options . DetectRenamesInWorkDir )
79
- {
80
- gitOptions . Flags |=
81
- GitStatusOptionFlags . RenamesIndexToWorkDir |
82
- GitStatusOptionFlags . RenamesFromRewrites ;
83
- }
84
-
85
- if ( options != null && options . ExcludeSubmodules )
86
- {
87
- gitOptions . Flags |=
88
- GitStatusOptionFlags . ExcludeSubmodules ;
89
- }
90
-
91
- try
92
- {
93
- StatusListSafeHandle list = Proxy . git_status_list_new ( repo . Handle , gitOptions ) ;
63
+ StatusListSafeHandle list = Proxy . git_status_list_new ( repo . Handle , coreOptions ) ;
94
64
int count = Proxy . git_status_list_entrycount ( list ) ;
95
65
96
66
for ( int i = 0 ; i < count ; i ++ )
@@ -115,10 +85,41 @@ internal RepositoryStatus(Repository repo, StatusOptions options)
115
85
116
86
isDirty = statusEntries . Any ( entry => entry . State != FileStatus . Ignored ) ;
117
87
}
118
- finally
88
+ }
89
+
90
+ private static GitStatusOptions CreateStatusOptions ( StatusOptions options )
91
+ {
92
+ var coreOptions = new GitStatusOptions
93
+ {
94
+ Version = 1 ,
95
+ Show = ( GitStatusShow ) options . Show ,
96
+ Flags =
97
+ GitStatusOptionFlags . IncludeIgnored |
98
+ GitStatusOptionFlags . IncludeUntracked |
99
+ GitStatusOptionFlags . RecurseUntrackedDirs ,
100
+ } ;
101
+
102
+ if ( options . DetectRenamesInIndex )
119
103
{
120
- gitOptions . Dispose ( ) ;
104
+ coreOptions . Flags |=
105
+ GitStatusOptionFlags . RenamesHeadToIndex |
106
+ GitStatusOptionFlags . RenamesFromRewrites ;
107
+ }
108
+
109
+ if ( options . DetectRenamesInWorkDir )
110
+ {
111
+ coreOptions . Flags |=
112
+ GitStatusOptionFlags . RenamesIndexToWorkDir |
113
+ GitStatusOptionFlags . RenamesFromRewrites ;
121
114
}
115
+
116
+ if ( options . ExcludeSubmodules )
117
+ {
118
+ coreOptions . Flags |=
119
+ GitStatusOptionFlags . ExcludeSubmodules ;
120
+ }
121
+
122
+ return coreOptions ;
122
123
}
123
124
124
125
private void AddStatusEntryForDelta ( FileStatus gitStatus , GitDiffDelta deltaHeadToIndex , GitDiffDelta deltaIndexToWorkDir )
0 commit comments