@@ -26,6 +26,7 @@ public class RepositoryStatus : IEnumerable<StatusEntry>
26
26
private readonly List < StatusEntry > ignored = new List < StatusEntry > ( ) ;
27
27
private readonly List < StatusEntry > renamedInIndex = new List < StatusEntry > ( ) ;
28
28
private readonly List < StatusEntry > renamedInWorkDir = new List < StatusEntry > ( ) ;
29
+ private readonly List < StatusEntry > unaltered = new List < StatusEntry > ( ) ;
29
30
private readonly bool isDirty ;
30
31
31
32
private readonly IDictionary < FileStatus , Action < RepositoryStatus , StatusEntry > > dispatcher = Build ( ) ;
@@ -42,7 +43,8 @@ private static IDictionary<FileStatus, Action<RepositoryStatus, StatusEntry>> Bu
42
43
{ FileStatus . Removed , ( rs , s ) => rs . removed . Add ( s ) } ,
43
44
{ FileStatus . RenamedInIndex , ( rs , s ) => rs . renamedInIndex . Add ( s ) } ,
44
45
{ FileStatus . Ignored , ( rs , s ) => rs . ignored . Add ( s ) } ,
45
- { FileStatus . RenamedInWorkDir , ( rs , s ) => rs . renamedInWorkDir . Add ( s ) }
46
+ { FileStatus . RenamedInWorkDir , ( rs , s ) => rs . renamedInWorkDir . Add ( s ) } ,
47
+ { FileStatus . Unaltered , ( rs , s ) => rs . unaltered . Add ( s ) } ,
46
48
} ;
47
49
}
48
50
@@ -81,7 +83,7 @@ internal RepositoryStatus(Repository repo, StatusOptions options)
81
83
AddStatusEntryForDelta ( entry . Status , deltaHeadToIndex , deltaIndexToWorkDir ) ;
82
84
}
83
85
84
- isDirty = statusEntries . Any ( entry => entry . State != FileStatus . Ignored ) ;
86
+ isDirty = statusEntries . Any ( entry => entry . State != FileStatus . Ignored || entry . State != FileStatus . Unaltered ) ;
85
87
}
86
88
}
87
89
@@ -123,6 +125,12 @@ private static GitStatusOptions CreateStatusOptions(StatusOptions options)
123
125
GitStatusOptionFlags . RecurseIgnoredDirs ;
124
126
}
125
127
128
+ if ( options . IncludeUnaltered )
129
+ {
130
+ coreOptions . Flags |=
131
+ GitStatusOptionFlags . IncludeUnmodified ;
132
+ }
133
+
126
134
return coreOptions ;
127
135
}
128
136
@@ -278,6 +286,14 @@ public virtual IEnumerable<StatusEntry> RenamedInWorkDir
278
286
get { return renamedInWorkDir ; }
279
287
}
280
288
289
+ /// <summary>
290
+ /// List of files that were unmodified in the working directory.
291
+ /// </summary>
292
+ public virtual IEnumerable < StatusEntry > Unaltered
293
+ {
294
+ get { return unaltered ; }
295
+ }
296
+
281
297
/// <summary>
282
298
/// True if the index or the working directory has been altered since the last commit. False otherwise.
283
299
/// </summary>
0 commit comments