diff --git a/src/app/FakeLib/Git/FileStatus.fs b/src/app/FakeLib/Git/FileStatus.fs
index afe5462ee02..c521cab4d25 100644
--- a/src/app/FakeLib/Git/FileStatus.fs
+++ b/src/app/FakeLib/Git/FileStatus.fs
@@ -9,17 +9,23 @@ open System.IO
/// A type which represents a file status in git.
type FileStatus =
| Added
-| Modified
+| Copied
| Deleted
+| Modified
+| Renamed
+| TypeChange
with
- static member Parse = function
+ static member Parse = function
| "A" -> Added
- | "M" -> Modified
+ | c when c.StartsWith "C" -> Copied
| "D" -> Deleted
+ | m when m.StartsWith "M" -> Modified
+ | r when r.StartsWith "R" -> Renamed
+ | "T" -> TypeChange
| s -> failwithf "Unknown file status %s" s
/// Gets the changed files between the given revisions
-let getChangedFiles repositoryDir revision1 revision2 =
+let getChangedFiles repositoryDir revision1 revision2 =
checkRevisionExists repositoryDir revision1
if revision2 <> "" then
checkRevisionExists repositoryDir revision2
diff --git a/src/test/Test.Git/FileStatusSpecs.cs b/src/test/Test.Git/FileStatusSpecs.cs
new file mode 100644
index 00000000000..a0a743ec054
--- /dev/null
+++ b/src/test/Test.Git/FileStatusSpecs.cs
@@ -0,0 +1,28 @@
+using Machine.Specifications;
+using static Fake.Git.FileStatus;
+
+namespace Test.Git
+{
+ public class when_getting_file_status
+ {
+ It should_be_able_to_get_modified_files =
+ () => FileStatus
+ .Parse.Invoke("M")
+ .ShouldEqual(FileStatus.Modified);
+
+ It should_be_able_to_get_rewritten_files =
+ () => FileStatus
+ .Parse.Invoke("M42")
+ .ShouldEqual(FileStatus.Modified);
+
+ It should_be_able_to_get_renamed_files =
+ () => FileStatus
+ .Parse.Invoke("R100")
+ .ShouldEqual(FileStatus.Renamed);
+
+ It should_be_able_to_get_probably_renamed_files =
+ () => FileStatus
+ .Parse.Invoke("R75")
+ .ShouldEqual(FileStatus.Renamed);
+ }
+}
\ No newline at end of file
diff --git a/src/test/Test.Git/Test.Git.csproj b/src/test/Test.Git/Test.Git.csproj
index c2f13d716d2..1140814fb62 100644
--- a/src/test/Test.Git/Test.Git.csproj
+++ b/src/test/Test.Git/Test.Git.csproj
@@ -42,6 +42,7 @@
+