diff --git a/pkg/integration/components/assert.go b/pkg/integration/components/assert.go
index 65e3e6ec9..c1ae4cdd2 100644
--- a/pkg/integration/components/assert.go
+++ b/pkg/integration/components/assert.go
@@ -192,6 +192,13 @@ func (self *Assert) InMenu() {
 	})
 }
 
+func (self *Assert) NotInPopup() {
+	self.assertWithRetries(func() (bool, string) {
+		currentViewName := self.gui.CurrentContext().GetView().Name()
+		return currentViewName != "menu" && currentViewName != "confirmation" && currentViewName != "commitMessage", "Expected popup not to be focused"
+	})
+}
+
 func (self *Assert) MatchCurrentViewTitle(matcher *matcher) {
 	self.matchString(matcher, "Unexpected current view title.",
 		func() string {
diff --git a/pkg/integration/tests/diff/diff.go b/pkg/integration/tests/diff/diff.go
new file mode 100644
index 000000000..9c23674a4
--- /dev/null
+++ b/pkg/integration/tests/diff/diff.go
@@ -0,0 +1,62 @@
+package diff
+
+import (
+	"github.com/jesseduffield/lazygit/pkg/config"
+	. "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var Diff = NewIntegrationTest(NewIntegrationTestArgs{
+	Description:  "View the diff of two branches, then view the reverse diff",
+	ExtraCmdArgs: "",
+	Skip:         false,
+	SetupConfig:  func(config *config.AppConfig) {},
+	SetupRepo: func(shell *Shell) {
+		shell.NewBranch("branch-a")
+		shell.CreateFileAndAdd("file1", "first line")
+		shell.Commit("first commit")
+
+		shell.NewBranch("branch-b")
+		shell.UpdateFileAndAdd("file1", "first line\nsecond line")
+		shell.Commit("update")
+
+		shell.Checkout("branch-a")
+	},
+	Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) {
+		input.SwitchToBranchesWindow()
+		assert.CurrentViewName("localBranches")
+
+		assert.MatchSelectedLine(Contains("branch-a"))
+		input.PressKeys(keys.Universal.DiffingMenu)
+		assert.InMenu()
+		assert.MatchCurrentViewTitle(Equals("Diffing"))
+		assert.MatchSelectedLine(Contains("diff branch-a"))
+		input.Confirm()
+
+		assert.CurrentViewName("localBranches")
+
+		assert.MatchViewContent("information", Contains("showing output for: git diff branch-a branch-a"))
+		input.NextItem()
+		assert.MatchViewContent("information", Contains("showing output for: git diff branch-a branch-b"))
+		assert.MatchMainViewContent(Contains("+second line"))
+
+		input.Enter()
+		assert.CurrentViewName("subCommits")
+		assert.MatchMainViewContent(Contains("+second line"))
+		assert.MatchSelectedLine(Contains("update"))
+		input.Enter()
+		assert.CurrentViewName("commitFiles")
+		assert.MatchSelectedLine(Contains("file1"))
+		assert.MatchMainViewContent(Contains("+second line"))
+
+		input.PressKeys(keys.Universal.Return)
+		input.PressKeys(keys.Universal.Return)
+		assert.CurrentViewName("localBranches")
+
+		input.PressKeys(keys.Universal.DiffingMenu)
+		assert.InMenu()
+		input.NavigateToListItemContainingText("reverse diff direction")
+		input.Confirm()
+		assert.MatchViewContent("information", Contains("showing output for: git diff branch-a branch-b -R"))
+		assert.MatchMainViewContent(Contains("-second line"))
+	},
+})
diff --git a/pkg/integration/tests/diff/diff_and_apply_patch.go b/pkg/integration/tests/diff/diff_and_apply_patch.go
new file mode 100644
index 000000000..7c27b1517
--- /dev/null
+++ b/pkg/integration/tests/diff/diff_and_apply_patch.go
@@ -0,0 +1,74 @@
+package diff
+
+import (
+	"github.com/jesseduffield/lazygit/pkg/config"
+	. "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var DiffAndApplyPatch = NewIntegrationTest(NewIntegrationTestArgs{
+	Description:  "Create a patch from the diff between two branches and apply the patch.",
+	ExtraCmdArgs: "",
+	Skip:         false,
+	SetupConfig:  func(config *config.AppConfig) {},
+	SetupRepo: func(shell *Shell) {
+		shell.NewBranch("branch-a")
+		shell.CreateFileAndAdd("file1", "first line\n")
+		shell.Commit("first commit")
+
+		shell.NewBranch("branch-b")
+		shell.UpdateFileAndAdd("file1", "first line\nsecond line\n")
+		shell.Commit("update")
+
+		shell.Checkout("branch-a")
+	},
+	Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) {
+		input.SwitchToBranchesWindow()
+		assert.CurrentViewName("localBranches")
+
+		assert.MatchSelectedLine(Contains("branch-a"))
+		input.PressKeys(keys.Universal.DiffingMenu)
+		assert.InMenu()
+		assert.MatchCurrentViewTitle(Equals("Diffing"))
+		assert.MatchSelectedLine(Contains("diff branch-a"))
+		input.Confirm()
+
+		assert.CurrentViewName("localBranches")
+
+		assert.MatchViewContent("information", Contains("showing output for: git diff branch-a branch-a"))
+		input.NextItem()
+		assert.MatchViewContent("information", Contains("showing output for: git diff branch-a branch-b"))
+		assert.MatchMainViewContent(Contains("+second line"))
+
+		input.Enter()
+		assert.CurrentViewName("subCommits")
+		assert.MatchMainViewContent(Contains("+second line"))
+		assert.MatchSelectedLine(Contains("update"))
+		input.Enter()
+		assert.CurrentViewName("commitFiles")
+		assert.MatchSelectedLine(Contains("file1"))
+		assert.MatchMainViewContent(Contains("+second line"))
+
+		// add the file to the patch
+		input.PrimaryAction()
+
+		input.PressKeys(keys.Universal.DiffingMenu)
+		assert.InMenu()
+		assert.MatchCurrentViewTitle(Equals("Diffing"))
+		input.NavigateToListItemContainingText("exit diff mode")
+		input.Confirm()
+
+		assert.MatchViewContent("information", NotContains("building patch"))
+
+		input.PressKeys(keys.Universal.CreatePatchOptionsMenu)
+		assert.InMenu()
+		assert.MatchCurrentViewTitle(Equals("Patch Options"))
+		// including the keybinding 'a' here to distinguish the menu item from the 'apply patch in reverse' item
+		input.NavigateToListItemContainingText("a apply patch")
+		input.Confirm()
+
+		input.SwitchToFilesWindow()
+
+		assert.MatchSelectedLine(Contains("file1"))
+		assert.MatchMainViewContent(Contains("+second line"))
+	},
+})
diff --git a/pkg/integration/tests/diff/diff_commits.go b/pkg/integration/tests/diff/diff_commits.go
new file mode 100644
index 000000000..bcf83d5c5
--- /dev/null
+++ b/pkg/integration/tests/diff/diff_commits.go
@@ -0,0 +1,56 @@
+package diff
+
+import (
+	"github.com/jesseduffield/lazygit/pkg/config"
+	. "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var DiffCommits = NewIntegrationTest(NewIntegrationTestArgs{
+	Description:  "View the diff between two commits",
+	ExtraCmdArgs: "",
+	Skip:         false,
+	SetupConfig:  func(config *config.AppConfig) {},
+	SetupRepo: func(shell *Shell) {
+		shell.CreateFileAndAdd("file1", "first line\n")
+		shell.Commit("first commit")
+		shell.UpdateFileAndAdd("file1", "first line\nsecond line\n")
+		shell.Commit("second commit")
+		shell.UpdateFileAndAdd("file1", "first line\nsecond line\nthird line\n")
+		shell.Commit("third commit")
+	},
+	Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) {
+		input.SwitchToCommitsWindow()
+		assert.CurrentViewName("commits")
+
+		assert.MatchSelectedLine(Contains("third commit"))
+
+		input.PressKeys(keys.Universal.DiffingMenu)
+		assert.InMenu()
+		assert.MatchCurrentViewTitle(Equals("Diffing"))
+		assert.MatchSelectedLine(Contains("diff"))
+		input.Confirm()
+		assert.NotInPopup()
+
+		assert.MatchViewContent("information", Contains("showing output for: git diff"))
+
+		input.NextItem()
+		input.NextItem()
+
+		assert.MatchSelectedLine(Contains("first commit"))
+
+		assert.MatchMainViewContent(Contains("-second line\n-third line"))
+
+		input.PressKeys(keys.Universal.DiffingMenu)
+		assert.InMenu()
+		input.NavigateToListItemContainingText("reverse diff direction")
+		input.Confirm()
+
+		assert.MatchMainViewContent(Contains("+second line\n+third line"))
+
+		input.Enter()
+
+		assert.CurrentViewName("commitFiles")
+		assert.MatchSelectedLine(Contains("file1"))
+		assert.MatchMainViewContent(Contains("+second line\n+third line"))
+	},
+})
diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go
index 3feeb2d81..53961363e 100644
--- a/pkg/integration/tests/tests.go
+++ b/pkg/integration/tests/tests.go
@@ -16,6 +16,7 @@ import (
 	"github.com/jesseduffield/lazygit/pkg/integration/tests/commit"
 	"github.com/jesseduffield/lazygit/pkg/integration/tests/config"
 	"github.com/jesseduffield/lazygit/pkg/integration/tests/custom_commands"
+	"github.com/jesseduffield/lazygit/pkg/integration/tests/diff"
 	"github.com/jesseduffield/lazygit/pkg/integration/tests/file"
 	"github.com/jesseduffield/lazygit/pkg/integration/tests/interactive_rebase"
 	"github.com/jesseduffield/lazygit/pkg/integration/tests/misc"
@@ -57,6 +58,9 @@ var tests = []*components.IntegrationTest{
 	stash.Stash,
 	stash.StashIncludingUntrackedFiles,
 	config.RemoteNamedStar,
+	diff.Diff,
+	diff.DiffAndApplyPatch,
+	diff.DiffCommits,
 }
 
 func GetTests() []*components.IntegrationTest {
diff --git a/test/integration/diffing/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/diffing/expected/repo/.git_keep/COMMIT_EDITMSG
deleted file mode 100644
index 9daeafb98..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/COMMIT_EDITMSG
+++ /dev/null
@@ -1 +0,0 @@
-test
diff --git a/test/integration/diffing/expected/repo/.git_keep/FETCH_HEAD b/test/integration/diffing/expected/repo/.git_keep/FETCH_HEAD
deleted file mode 100644
index e69de29bb..000000000
diff --git a/test/integration/diffing/expected/repo/.git_keep/HEAD b/test/integration/diffing/expected/repo/.git_keep/HEAD
deleted file mode 100644
index 1d57c9ea7..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/branch2
diff --git a/test/integration/diffing/expected/repo/.git_keep/config b/test/integration/diffing/expected/repo/.git_keep/config
deleted file mode 100644
index 8ae104545..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/config
+++ /dev/null
@@ -1,10 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = true
-	bare = false
-	logallrefupdates = true
-	ignorecase = true
-	precomposeunicode = true
-[user]
-	email = CI@example.com
-	name = CI
diff --git a/test/integration/diffing/expected/repo/.git_keep/description b/test/integration/diffing/expected/repo/.git_keep/description
deleted file mode 100644
index 498b267a8..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/test/integration/diffing/expected/repo/.git_keep/index b/test/integration/diffing/expected/repo/.git_keep/index
deleted file mode 100644
index a119ab59e..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/index and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/info/exclude b/test/integration/diffing/expected/repo/.git_keep/info/exclude
deleted file mode 100644
index 8e9f2071f..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/info/exclude
+++ /dev/null
@@ -1,7 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
-.DS_Store
diff --git a/test/integration/diffing/expected/repo/.git_keep/logs/HEAD b/test/integration/diffing/expected/repo/.git_keep/logs/HEAD
deleted file mode 100644
index 6d2ab7ba5..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/logs/HEAD
+++ /dev/null
@@ -1,9 +0,0 @@
-0000000000000000000000000000000000000000 5751731b38a36f8eb54a4bb304522ca539e04522 CI <CI@example.com> 1617680560 +1000	commit (initial): file0
-5751731b38a36f8eb54a4bb304522ca539e04522 d15e253139400c94b42fc266641d1698720d4ecf CI <CI@example.com> 1617680560 +1000	commit: file1
-d15e253139400c94b42fc266641d1698720d4ecf 0519814b4923f4639f1a47348b1539e3c5c54904 CI <CI@example.com> 1617680560 +1000	commit: file2
-0519814b4923f4639f1a47348b1539e3c5c54904 144da8a531224129210249f43dded86056891506 CI <CI@example.com> 1617680561 +1000	commit: file4
-144da8a531224129210249f43dded86056891506 144da8a531224129210249f43dded86056891506 CI <CI@example.com> 1617680561 +1000	checkout: moving from master to branch2
-144da8a531224129210249f43dded86056891506 96a6d041bbb131df0e74d179c3adcd2ace0e7f9c CI <CI@example.com> 1617680561 +1000	commit: file4
-96a6d041bbb131df0e74d179c3adcd2ace0e7f9c 75b31f81dd4387724638dbd3aff7380155c672cd CI <CI@example.com> 1617680561 +1000	commit: file4
-75b31f81dd4387724638dbd3aff7380155c672cd f677ef8a14ca2770e48129cc13acfa1c369908cc CI <CI@example.com> 1617680561 +1000	commit: file2
-f677ef8a14ca2770e48129cc13acfa1c369908cc a100b407f33fd2e97a3cb6f62b68ed6b7cc6c676 CI <CI@example.com> 1617680570 +1000	commit: test
diff --git a/test/integration/diffing/expected/repo/.git_keep/logs/refs/heads/branch2 b/test/integration/diffing/expected/repo/.git_keep/logs/refs/heads/branch2
deleted file mode 100644
index ea8f0f0b7..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/logs/refs/heads/branch2
+++ /dev/null
@@ -1,5 +0,0 @@
-0000000000000000000000000000000000000000 144da8a531224129210249f43dded86056891506 CI <CI@example.com> 1617680561 +1000	branch: Created from HEAD
-144da8a531224129210249f43dded86056891506 96a6d041bbb131df0e74d179c3adcd2ace0e7f9c CI <CI@example.com> 1617680561 +1000	commit: file4
-96a6d041bbb131df0e74d179c3adcd2ace0e7f9c 75b31f81dd4387724638dbd3aff7380155c672cd CI <CI@example.com> 1617680561 +1000	commit: file4
-75b31f81dd4387724638dbd3aff7380155c672cd f677ef8a14ca2770e48129cc13acfa1c369908cc CI <CI@example.com> 1617680561 +1000	commit: file2
-f677ef8a14ca2770e48129cc13acfa1c369908cc a100b407f33fd2e97a3cb6f62b68ed6b7cc6c676 CI <CI@example.com> 1617680570 +1000	commit: test
diff --git a/test/integration/diffing/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/diffing/expected/repo/.git_keep/logs/refs/heads/master
deleted file mode 100644
index 7427bd7e9..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/logs/refs/heads/master
+++ /dev/null
@@ -1,4 +0,0 @@
-0000000000000000000000000000000000000000 5751731b38a36f8eb54a4bb304522ca539e04522 CI <CI@example.com> 1617680560 +1000	commit (initial): file0
-5751731b38a36f8eb54a4bb304522ca539e04522 d15e253139400c94b42fc266641d1698720d4ecf CI <CI@example.com> 1617680560 +1000	commit: file1
-d15e253139400c94b42fc266641d1698720d4ecf 0519814b4923f4639f1a47348b1539e3c5c54904 CI <CI@example.com> 1617680560 +1000	commit: file2
-0519814b4923f4639f1a47348b1539e3c5c54904 144da8a531224129210249f43dded86056891506 CI <CI@example.com> 1617680561 +1000	commit: file4
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/05/19814b4923f4639f1a47348b1539e3c5c54904 b/test/integration/diffing/expected/repo/.git_keep/objects/05/19814b4923f4639f1a47348b1539e3c5c54904
deleted file mode 100644
index dc7f756dd..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/05/19814b4923f4639f1a47348b1539e3c5c54904 and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/0c/2aa38e0600e0d2df09c2f84664d8a14f899879 b/test/integration/diffing/expected/repo/.git_keep/objects/0c/2aa38e0600e0d2df09c2f84664d8a14f899879
deleted file mode 100644
index 38acaeff2..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/0c/2aa38e0600e0d2df09c2f84664d8a14f899879 and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/14/4da8a531224129210249f43dded86056891506 b/test/integration/diffing/expected/repo/.git_keep/objects/14/4da8a531224129210249f43dded86056891506
deleted file mode 100644
index f0e0252c6..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/objects/14/4da8a531224129210249f43dded86056891506
+++ /dev/null
@@ -1,2 +0,0 @@
-x��A
-�0@Q�9E��d�I2"BW=�$N�`l)<�=���[�����OcW���ieR �U��K�B��E�K��əMv}�"0d��
s@*k��Fd�F>��v��u�������R�~�� 'r1�=�s����'7my)���8N
\ No newline at end of file
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 b/test/integration/diffing/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827
deleted file mode 100644
index f74bf2335..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442 b/test/integration/diffing/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442
deleted file mode 100644
index 79fcadf67..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442 and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/2d/00bd505971a8bc7318d98e003aee708a367c85 b/test/integration/diffing/expected/repo/.git_keep/objects/2d/00bd505971a8bc7318d98e003aee708a367c85
deleted file mode 100644
index d4270c258..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/2d/00bd505971a8bc7318d98e003aee708a367c85 and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da b/test/integration/diffing/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da
deleted file mode 100644
index 06c9cb73d..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/3b/aaa732b89ed46a1af1b24d0d4e3b8c7375684a b/test/integration/diffing/expected/repo/.git_keep/objects/3b/aaa732b89ed46a1af1b24d0d4e3b8c7375684a
deleted file mode 100644
index 65140e8b7..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/3b/aaa732b89ed46a1af1b24d0d4e3b8c7375684a and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/3d/b2086f780b1cf632eec29111ef395913a8ab2b b/test/integration/diffing/expected/repo/.git_keep/objects/3d/b2086f780b1cf632eec29111ef395913a8ab2b
deleted file mode 100644
index e0473aaf4..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/3d/b2086f780b1cf632eec29111ef395913a8ab2b and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/57/51731b38a36f8eb54a4bb304522ca539e04522 b/test/integration/diffing/expected/repo/.git_keep/objects/57/51731b38a36f8eb54a4bb304522ca539e04522
deleted file mode 100644
index 802ec4155..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/57/51731b38a36f8eb54a4bb304522ca539e04522 and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/59/a0ec98e1847ca72dc35b7ab8b84f527b6af280 b/test/integration/diffing/expected/repo/.git_keep/objects/59/a0ec98e1847ca72dc35b7ab8b84f527b6af280
deleted file mode 100644
index ed5045497..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/59/a0ec98e1847ca72dc35b7ab8b84f527b6af280 and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/75/b31f81dd4387724638dbd3aff7380155c672cd b/test/integration/diffing/expected/repo/.git_keep/objects/75/b31f81dd4387724638dbd3aff7380155c672cd
deleted file mode 100644
index e14a460c2..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/75/b31f81dd4387724638dbd3aff7380155c672cd and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/8e/4cb0cd56d785ba4442a5b20e7ae5de5ae33723 b/test/integration/diffing/expected/repo/.git_keep/objects/8e/4cb0cd56d785ba4442a5b20e7ae5de5ae33723
deleted file mode 100644
index 2920ab335..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/8e/4cb0cd56d785ba4442a5b20e7ae5de5ae33723 and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/96/a6d041bbb131df0e74d179c3adcd2ace0e7f9c b/test/integration/diffing/expected/repo/.git_keep/objects/96/a6d041bbb131df0e74d179c3adcd2ace0e7f9c
deleted file mode 100644
index 5f97ec479..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/96/a6d041bbb131df0e74d179c3adcd2ace0e7f9c and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/9e/88a70dc8d82dd2afbfd50176ef78e18823bc2c b/test/integration/diffing/expected/repo/.git_keep/objects/9e/88a70dc8d82dd2afbfd50176ef78e18823bc2c
deleted file mode 100644
index 0e95eb06d..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/9e/88a70dc8d82dd2afbfd50176ef78e18823bc2c and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/a1/00b407f33fd2e97a3cb6f62b68ed6b7cc6c676 b/test/integration/diffing/expected/repo/.git_keep/objects/a1/00b407f33fd2e97a3cb6f62b68ed6b7cc6c676
deleted file mode 100644
index 8c6e41957..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/a1/00b407f33fd2e97a3cb6f62b68ed6b7cc6c676 and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 b/test/integration/diffing/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5
deleted file mode 100644
index 285df3e5f..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/d0/76cc9cc09acaa2d36fbc7a95fd3e2306494641 b/test/integration/diffing/expected/repo/.git_keep/objects/d0/76cc9cc09acaa2d36fbc7a95fd3e2306494641
deleted file mode 100644
index 2e9066287..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/objects/d0/76cc9cc09acaa2d36fbc7a95fd3e2306494641
+++ /dev/null
@@ -1,2 +0,0 @@
-x+)JMU03c040031QH��I5`������ֶw���w.��h�T�[H
-��y�W5�Ɨ��(�|�^-�W(x9
\ No newline at end of file
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/d1/5e253139400c94b42fc266641d1698720d4ecf b/test/integration/diffing/expected/repo/.git_keep/objects/d1/5e253139400c94b42fc266641d1698720d4ecf
deleted file mode 100644
index e6f554e7f..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/objects/d1/5e253139400c94b42fc266641d1698720d4ecf
+++ /dev/null
@@ -1,2 +0,0 @@
-x��K
-�0@��)f_(3��Rp�1&�HSER��+=Aw��[<�j]P��v�„)�d�,�vrq.�8�yrjF�}�dv>�� �@�Qq�e�%x��8��Z�����=���a|���M�z��b�!"\	�iϩ��f^V%�Hr8�
\ No newline at end of file
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/e5/c5c5583f49a34e86ce622b59363df99e09d4c6 b/test/integration/diffing/expected/repo/.git_keep/objects/e5/c5c5583f49a34e86ce622b59363df99e09d4c6
deleted file mode 100644
index 01ce23cee..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/e5/c5c5583f49a34e86ce622b59363df99e09d4c6 and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/e7/76522ac28860d2eba6fe98fa4fad67e798419a b/test/integration/diffing/expected/repo/.git_keep/objects/e7/76522ac28860d2eba6fe98fa4fad67e798419a
deleted file mode 100644
index 08edf28f3..000000000
Binary files a/test/integration/diffing/expected/repo/.git_keep/objects/e7/76522ac28860d2eba6fe98fa4fad67e798419a and /dev/null differ
diff --git a/test/integration/diffing/expected/repo/.git_keep/objects/f6/77ef8a14ca2770e48129cc13acfa1c369908cc b/test/integration/diffing/expected/repo/.git_keep/objects/f6/77ef8a14ca2770e48129cc13acfa1c369908cc
deleted file mode 100644
index 1380ed286..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/objects/f6/77ef8a14ca2770e48129cc13acfa1c369908cc
+++ /dev/null
@@ -1,3 +0,0 @@
-x��M
-�0@a�9E��d�33��c�L���R"x|{��o�����-��U�D�������`Ձ��*Ii���]}wKiPJ���|��e.Aj��R�H>#���;N�>NO�J�W��=, �K�
-�9s�s����eUo~b,9O
\ No newline at end of file
diff --git a/test/integration/diffing/expected/repo/.git_keep/refs/heads/branch2 b/test/integration/diffing/expected/repo/.git_keep/refs/heads/branch2
deleted file mode 100644
index dcc322cf6..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/refs/heads/branch2
+++ /dev/null
@@ -1 +0,0 @@
-a100b407f33fd2e97a3cb6f62b68ed6b7cc6c676
diff --git a/test/integration/diffing/expected/repo/.git_keep/refs/heads/master b/test/integration/diffing/expected/repo/.git_keep/refs/heads/master
deleted file mode 100644
index bb48ea2cc..000000000
--- a/test/integration/diffing/expected/repo/.git_keep/refs/heads/master
+++ /dev/null
@@ -1 +0,0 @@
-144da8a531224129210249f43dded86056891506
diff --git a/test/integration/diffing/expected/repo/file0 b/test/integration/diffing/expected/repo/file0
deleted file mode 100644
index 38143ad4a..000000000
--- a/test/integration/diffing/expected/repo/file0
+++ /dev/null
@@ -1 +0,0 @@
-test0
diff --git a/test/integration/diffing/expected/repo/file1 b/test/integration/diffing/expected/repo/file1
deleted file mode 100644
index a5bce3fd2..000000000
--- a/test/integration/diffing/expected/repo/file1
+++ /dev/null
@@ -1 +0,0 @@
-test1
diff --git a/test/integration/diffing/expected/repo/file2 b/test/integration/diffing/expected/repo/file2
deleted file mode 100644
index 180cf8328..000000000
--- a/test/integration/diffing/expected/repo/file2
+++ /dev/null
@@ -1 +0,0 @@
-test2
diff --git a/test/integration/diffing/expected/repo/file4 b/test/integration/diffing/expected/repo/file4
deleted file mode 100644
index 2d00bd505..000000000
--- a/test/integration/diffing/expected/repo/file4
+++ /dev/null
@@ -1 +0,0 @@
-line one
diff --git a/test/integration/diffing/recording.json b/test/integration/diffing/recording.json
deleted file mode 100644
index e3e075780..000000000
--- a/test/integration/diffing/recording.json
+++ /dev/null
@@ -1 +0,0 @@
-{"KeyEvents":[{"Timestamp":497,"Mod":0,"Key":259,"Ch":0},{"Timestamp":1570,"Mod":0,"Key":256,"Ch":87},{"Timestamp":1882,"Mod":0,"Key":13,"Ch":13},{"Timestamp":2258,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2514,"Mod":0,"Key":13,"Ch":13},{"Timestamp":3602,"Mod":0,"Key":13,"Ch":13},{"Timestamp":5057,"Mod":0,"Key":256,"Ch":32},{"Timestamp":5250,"Mod":0,"Key":258,"Ch":0},{"Timestamp":5410,"Mod":0,"Key":256,"Ch":32},{"Timestamp":6010,"Mod":2,"Key":16,"Ch":16},{"Timestamp":6730,"Mod":0,"Key":258,"Ch":0},{"Timestamp":7106,"Mod":0,"Key":13,"Ch":13},{"Timestamp":8090,"Mod":0,"Key":260,"Ch":0},{"Timestamp":8330,"Mod":0,"Key":256,"Ch":99},{"Timestamp":8545,"Mod":0,"Key":256,"Ch":116},{"Timestamp":8601,"Mod":0,"Key":256,"Ch":101},{"Timestamp":8778,"Mod":0,"Key":256,"Ch":115},{"Timestamp":8809,"Mod":0,"Key":256,"Ch":116},{"Timestamp":9074,"Mod":0,"Key":13,"Ch":13},{"Timestamp":9722,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]}
\ No newline at end of file
diff --git a/test/integration/diffing/setup.sh b/test/integration/diffing/setup.sh
deleted file mode 100644
index 4cd444a1f..000000000
--- a/test/integration/diffing/setup.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-set -e
-
-cd $1
-
-git init
-
-git config user.email "CI@example.com"
-git config user.name "CI"
-
-echo test0 > file0
-git add .
-git commit -am file0
-
-echo test1 > file1
-git add .
-git commit -am file1
-
-echo test2 > file2
-git add .
-git commit -am file2
-
-echo "line one" > file4
-git add .
-git commit -am file4
-
-git checkout -b branch2
-
-echo "line two" >> file4
-git add .
-git commit -am file4
-
-echo "line three" >> file4
-git add .
-git commit -am file4
-
-echo "line two" >> file2
-git add .
-git commit -am file2
diff --git a/test/integration/diffing/test.json b/test/integration/diffing/test.json
deleted file mode 100644
index 8ffc90df2..000000000
--- a/test/integration/diffing/test.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "description": "diffing two branches and making a patch from their diff files", "speed": 10 }
diff --git a/test/integration/diffing2/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/diffing2/expected/repo/.git_keep/COMMIT_EDITMSG
deleted file mode 100644
index d72af3146..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/COMMIT_EDITMSG
+++ /dev/null
@@ -1 +0,0 @@
-asd
diff --git a/test/integration/diffing2/expected/repo/.git_keep/FETCH_HEAD b/test/integration/diffing2/expected/repo/.git_keep/FETCH_HEAD
deleted file mode 100644
index e69de29bb..000000000
diff --git a/test/integration/diffing2/expected/repo/.git_keep/HEAD b/test/integration/diffing2/expected/repo/.git_keep/HEAD
deleted file mode 100644
index 1d57c9ea7..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/branch2
diff --git a/test/integration/diffing2/expected/repo/.git_keep/config b/test/integration/diffing2/expected/repo/.git_keep/config
deleted file mode 100644
index 8ae104545..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/config
+++ /dev/null
@@ -1,10 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = true
-	bare = false
-	logallrefupdates = true
-	ignorecase = true
-	precomposeunicode = true
-[user]
-	email = CI@example.com
-	name = CI
diff --git a/test/integration/diffing2/expected/repo/.git_keep/description b/test/integration/diffing2/expected/repo/.git_keep/description
deleted file mode 100644
index 498b267a8..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/test/integration/diffing2/expected/repo/.git_keep/index b/test/integration/diffing2/expected/repo/.git_keep/index
deleted file mode 100644
index f8944878d..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/index and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/info/exclude b/test/integration/diffing2/expected/repo/.git_keep/info/exclude
deleted file mode 100644
index 8e9f2071f..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/info/exclude
+++ /dev/null
@@ -1,7 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
-.DS_Store
diff --git a/test/integration/diffing2/expected/repo/.git_keep/logs/HEAD b/test/integration/diffing2/expected/repo/.git_keep/logs/HEAD
deleted file mode 100644
index 2b9fe8586..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/logs/HEAD
+++ /dev/null
@@ -1,9 +0,0 @@
-0000000000000000000000000000000000000000 7bf3d13079ced18f5b00e29c48c777e23f687d0a CI <CI@example.com> 1617680651 +1000	commit (initial): file0
-7bf3d13079ced18f5b00e29c48c777e23f687d0a e876c3dfe2826621bea1bd3c87c2b9e2be88e69e CI <CI@example.com> 1617680651 +1000	commit: file1
-e876c3dfe2826621bea1bd3c87c2b9e2be88e69e c6756882cc166f52b096a5e4fb9e4f5d507870c8 CI <CI@example.com> 1617680651 +1000	commit: file2
-c6756882cc166f52b096a5e4fb9e4f5d507870c8 06da465196938ea235323950ee451ffb36a431cf CI <CI@example.com> 1617680651 +1000	commit: file4
-06da465196938ea235323950ee451ffb36a431cf 06da465196938ea235323950ee451ffb36a431cf CI <CI@example.com> 1617680651 +1000	checkout: moving from master to branch2
-06da465196938ea235323950ee451ffb36a431cf 6d04f5ed53b383c0a4c63cac168df557b6df1e44 CI <CI@example.com> 1617680651 +1000	commit: file4
-6d04f5ed53b383c0a4c63cac168df557b6df1e44 a11d868e88adb55a48fc55ee1377b3255c0cd329 CI <CI@example.com> 1617680651 +1000	commit: file4
-a11d868e88adb55a48fc55ee1377b3255c0cd329 1b74d64fe4055d4502ac600072586068b27d4aa7 CI <CI@example.com> 1617680651 +1000	commit: file2
-1b74d64fe4055d4502ac600072586068b27d4aa7 0804f2069f5af172770da3d231be982ca320bf8b CI <CI@example.com> 1617680662 +1000	commit: asd
diff --git a/test/integration/diffing2/expected/repo/.git_keep/logs/refs/heads/branch2 b/test/integration/diffing2/expected/repo/.git_keep/logs/refs/heads/branch2
deleted file mode 100644
index a67589ac2..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/logs/refs/heads/branch2
+++ /dev/null
@@ -1,5 +0,0 @@
-0000000000000000000000000000000000000000 06da465196938ea235323950ee451ffb36a431cf CI <CI@example.com> 1617680651 +1000	branch: Created from HEAD
-06da465196938ea235323950ee451ffb36a431cf 6d04f5ed53b383c0a4c63cac168df557b6df1e44 CI <CI@example.com> 1617680651 +1000	commit: file4
-6d04f5ed53b383c0a4c63cac168df557b6df1e44 a11d868e88adb55a48fc55ee1377b3255c0cd329 CI <CI@example.com> 1617680651 +1000	commit: file4
-a11d868e88adb55a48fc55ee1377b3255c0cd329 1b74d64fe4055d4502ac600072586068b27d4aa7 CI <CI@example.com> 1617680651 +1000	commit: file2
-1b74d64fe4055d4502ac600072586068b27d4aa7 0804f2069f5af172770da3d231be982ca320bf8b CI <CI@example.com> 1617680662 +1000	commit: asd
diff --git a/test/integration/diffing2/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/diffing2/expected/repo/.git_keep/logs/refs/heads/master
deleted file mode 100644
index c435fd1a6..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/logs/refs/heads/master
+++ /dev/null
@@ -1,4 +0,0 @@
-0000000000000000000000000000000000000000 7bf3d13079ced18f5b00e29c48c777e23f687d0a CI <CI@example.com> 1617680651 +1000	commit (initial): file0
-7bf3d13079ced18f5b00e29c48c777e23f687d0a e876c3dfe2826621bea1bd3c87c2b9e2be88e69e CI <CI@example.com> 1617680651 +1000	commit: file1
-e876c3dfe2826621bea1bd3c87c2b9e2be88e69e c6756882cc166f52b096a5e4fb9e4f5d507870c8 CI <CI@example.com> 1617680651 +1000	commit: file2
-c6756882cc166f52b096a5e4fb9e4f5d507870c8 06da465196938ea235323950ee451ffb36a431cf CI <CI@example.com> 1617680651 +1000	commit: file4
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/06/da465196938ea235323950ee451ffb36a431cf b/test/integration/diffing2/expected/repo/.git_keep/objects/06/da465196938ea235323950ee451ffb36a431cf
deleted file mode 100644
index d7e70107c..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/06/da465196938ea235323950ee451ffb36a431cf and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/08/04f2069f5af172770da3d231be982ca320bf8b b/test/integration/diffing2/expected/repo/.git_keep/objects/08/04f2069f5af172770da3d231be982ca320bf8b
deleted file mode 100644
index eea371cdc..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/08/04f2069f5af172770da3d231be982ca320bf8b and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/0c/2aa38e0600e0d2df09c2f84664d8a14f899879 b/test/integration/diffing2/expected/repo/.git_keep/objects/0c/2aa38e0600e0d2df09c2f84664d8a14f899879
deleted file mode 100644
index 38acaeff2..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/0c/2aa38e0600e0d2df09c2f84664d8a14f899879 and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 b/test/integration/diffing2/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827
deleted file mode 100644
index f74bf2335..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/1b/74d64fe4055d4502ac600072586068b27d4aa7 b/test/integration/diffing2/expected/repo/.git_keep/objects/1b/74d64fe4055d4502ac600072586068b27d4aa7
deleted file mode 100644
index 16181d57a..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/objects/1b/74d64fe4055d4502ac600072586068b27d4aa7
+++ /dev/null
@@ -1,3 +0,0 @@
-x��1
-�0@��>��B��H���B�C�eH�\��#t����m]��!�f�bdBԌ"
-ڤ\-Iվj�h1IIݮ���W�",&�e"�^j&2�.ƩC�r�09���v�a��a|�W�}�[�և����_!���zN5���:/���?9�
\ No newline at end of file
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442 b/test/integration/diffing2/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442
deleted file mode 100644
index 79fcadf67..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442 and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/2d/00bd505971a8bc7318d98e003aee708a367c85 b/test/integration/diffing2/expected/repo/.git_keep/objects/2d/00bd505971a8bc7318d98e003aee708a367c85
deleted file mode 100644
index d4270c258..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/2d/00bd505971a8bc7318d98e003aee708a367c85 and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da b/test/integration/diffing2/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da
deleted file mode 100644
index 06c9cb73d..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/3b/aaa732b89ed46a1af1b24d0d4e3b8c7375684a b/test/integration/diffing2/expected/repo/.git_keep/objects/3b/aaa732b89ed46a1af1b24d0d4e3b8c7375684a
deleted file mode 100644
index 65140e8b7..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/3b/aaa732b89ed46a1af1b24d0d4e3b8c7375684a and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/3d/b2086f780b1cf632eec29111ef395913a8ab2b b/test/integration/diffing2/expected/repo/.git_keep/objects/3d/b2086f780b1cf632eec29111ef395913a8ab2b
deleted file mode 100644
index e0473aaf4..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/3d/b2086f780b1cf632eec29111ef395913a8ab2b and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/59/a0ec98e1847ca72dc35b7ab8b84f527b6af280 b/test/integration/diffing2/expected/repo/.git_keep/objects/59/a0ec98e1847ca72dc35b7ab8b84f527b6af280
deleted file mode 100644
index ed5045497..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/59/a0ec98e1847ca72dc35b7ab8b84f527b6af280 and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/6d/04f5ed53b383c0a4c63cac168df557b6df1e44 b/test/integration/diffing2/expected/repo/.git_keep/objects/6d/04f5ed53b383c0a4c63cac168df557b6df1e44
deleted file mode 100644
index 8728705f8..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/6d/04f5ed53b383c0a4c63cac168df557b6df1e44 and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/7b/f3d13079ced18f5b00e29c48c777e23f687d0a b/test/integration/diffing2/expected/repo/.git_keep/objects/7b/f3d13079ced18f5b00e29c48c777e23f687d0a
deleted file mode 100644
index 7404048eb..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/7b/f3d13079ced18f5b00e29c48c777e23f687d0a and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/8e/4cb0cd56d785ba4442a5b20e7ae5de5ae33723 b/test/integration/diffing2/expected/repo/.git_keep/objects/8e/4cb0cd56d785ba4442a5b20e7ae5de5ae33723
deleted file mode 100644
index 2920ab335..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/8e/4cb0cd56d785ba4442a5b20e7ae5de5ae33723 and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/9e/88a70dc8d82dd2afbfd50176ef78e18823bc2c b/test/integration/diffing2/expected/repo/.git_keep/objects/9e/88a70dc8d82dd2afbfd50176ef78e18823bc2c
deleted file mode 100644
index 0e95eb06d..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/9e/88a70dc8d82dd2afbfd50176ef78e18823bc2c and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/a1/1d868e88adb55a48fc55ee1377b3255c0cd329 b/test/integration/diffing2/expected/repo/.git_keep/objects/a1/1d868e88adb55a48fc55ee1377b3255c0cd329
deleted file mode 100644
index 8d1c80d70..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/a1/1d868e88adb55a48fc55ee1377b3255c0cd329 and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 b/test/integration/diffing2/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5
deleted file mode 100644
index 285df3e5f..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/c6/756882cc166f52b096a5e4fb9e4f5d507870c8 b/test/integration/diffing2/expected/repo/.git_keep/objects/c6/756882cc166f52b096a5e4fb9e4f5d507870c8
deleted file mode 100644
index 3869825cb..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/c6/756882cc166f52b096a5e4fb9e4f5d507870c8 and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/d0/76cc9cc09acaa2d36fbc7a95fd3e2306494641 b/test/integration/diffing2/expected/repo/.git_keep/objects/d0/76cc9cc09acaa2d36fbc7a95fd3e2306494641
deleted file mode 100644
index 2e9066287..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/objects/d0/76cc9cc09acaa2d36fbc7a95fd3e2306494641
+++ /dev/null
@@ -1,2 +0,0 @@
-x+)JMU03c040031QH��I5`������ֶw���w.��h�T�[H
-��y�W5�Ɨ��(�|�^-�W(x9
\ No newline at end of file
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/e5/c5c5583f49a34e86ce622b59363df99e09d4c6 b/test/integration/diffing2/expected/repo/.git_keep/objects/e5/c5c5583f49a34e86ce622b59363df99e09d4c6
deleted file mode 100644
index 01ce23cee..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/e5/c5c5583f49a34e86ce622b59363df99e09d4c6 and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/e7/76522ac28860d2eba6fe98fa4fad67e798419a b/test/integration/diffing2/expected/repo/.git_keep/objects/e7/76522ac28860d2eba6fe98fa4fad67e798419a
deleted file mode 100644
index 08edf28f3..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/e7/76522ac28860d2eba6fe98fa4fad67e798419a and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/objects/e8/76c3dfe2826621bea1bd3c87c2b9e2be88e69e b/test/integration/diffing2/expected/repo/.git_keep/objects/e8/76c3dfe2826621bea1bd3c87c2b9e2be88e69e
deleted file mode 100644
index 7dc95dfed..000000000
Binary files a/test/integration/diffing2/expected/repo/.git_keep/objects/e8/76c3dfe2826621bea1bd3c87c2b9e2be88e69e and /dev/null differ
diff --git a/test/integration/diffing2/expected/repo/.git_keep/refs/heads/branch2 b/test/integration/diffing2/expected/repo/.git_keep/refs/heads/branch2
deleted file mode 100644
index da38abcfa..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/refs/heads/branch2
+++ /dev/null
@@ -1 +0,0 @@
-0804f2069f5af172770da3d231be982ca320bf8b
diff --git a/test/integration/diffing2/expected/repo/.git_keep/refs/heads/master b/test/integration/diffing2/expected/repo/.git_keep/refs/heads/master
deleted file mode 100644
index 168b462cc..000000000
--- a/test/integration/diffing2/expected/repo/.git_keep/refs/heads/master
+++ /dev/null
@@ -1 +0,0 @@
-06da465196938ea235323950ee451ffb36a431cf
diff --git a/test/integration/diffing2/expected/repo/file0 b/test/integration/diffing2/expected/repo/file0
deleted file mode 100644
index 38143ad4a..000000000
--- a/test/integration/diffing2/expected/repo/file0
+++ /dev/null
@@ -1 +0,0 @@
-test0
diff --git a/test/integration/diffing2/expected/repo/file1 b/test/integration/diffing2/expected/repo/file1
deleted file mode 100644
index a5bce3fd2..000000000
--- a/test/integration/diffing2/expected/repo/file1
+++ /dev/null
@@ -1 +0,0 @@
-test1
diff --git a/test/integration/diffing2/expected/repo/file2 b/test/integration/diffing2/expected/repo/file2
deleted file mode 100644
index 180cf8328..000000000
--- a/test/integration/diffing2/expected/repo/file2
+++ /dev/null
@@ -1 +0,0 @@
-test2
diff --git a/test/integration/diffing2/expected/repo/file4 b/test/integration/diffing2/expected/repo/file4
deleted file mode 100644
index 2d00bd505..000000000
--- a/test/integration/diffing2/expected/repo/file4
+++ /dev/null
@@ -1 +0,0 @@
-line one
diff --git a/test/integration/diffing2/recording.json b/test/integration/diffing2/recording.json
deleted file mode 100644
index c560496f6..000000000
--- a/test/integration/diffing2/recording.json
+++ /dev/null
@@ -1 +0,0 @@
-{"KeyEvents":[{"Timestamp":819,"Mod":0,"Key":259,"Ch":0},{"Timestamp":1236,"Mod":0,"Key":256,"Ch":87},{"Timestamp":1491,"Mod":0,"Key":13,"Ch":13},{"Timestamp":1899,"Mod":0,"Key":258,"Ch":0},{"Timestamp":3115,"Mod":0,"Key":256,"Ch":87},{"Timestamp":3539,"Mod":0,"Key":258,"Ch":0},{"Timestamp":3875,"Mod":0,"Key":258,"Ch":0},{"Timestamp":4315,"Mod":0,"Key":13,"Ch":13},{"Timestamp":5291,"Mod":0,"Key":13,"Ch":13},{"Timestamp":6643,"Mod":0,"Key":13,"Ch":13},{"Timestamp":7211,"Mod":0,"Key":256,"Ch":32},{"Timestamp":7475,"Mod":0,"Key":258,"Ch":0},{"Timestamp":7627,"Mod":0,"Key":256,"Ch":32},{"Timestamp":8227,"Mod":2,"Key":16,"Ch":16},{"Timestamp":8770,"Mod":0,"Key":258,"Ch":0},{"Timestamp":8963,"Mod":0,"Key":258,"Ch":0},{"Timestamp":9227,"Mod":0,"Key":13,"Ch":13},{"Timestamp":9947,"Mod":0,"Key":260,"Ch":0},{"Timestamp":10379,"Mod":0,"Key":256,"Ch":99},{"Timestamp":10635,"Mod":0,"Key":256,"Ch":97},{"Timestamp":10674,"Mod":0,"Key":256,"Ch":115},{"Timestamp":10731,"Mod":0,"Key":256,"Ch":100},{"Timestamp":11203,"Mod":0,"Key":13,"Ch":13},{"Timestamp":11715,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]}
\ No newline at end of file
diff --git a/test/integration/diffing2/setup.sh b/test/integration/diffing2/setup.sh
deleted file mode 100644
index 4cd444a1f..000000000
--- a/test/integration/diffing2/setup.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-set -e
-
-cd $1
-
-git init
-
-git config user.email "CI@example.com"
-git config user.name "CI"
-
-echo test0 > file0
-git add .
-git commit -am file0
-
-echo test1 > file1
-git add .
-git commit -am file1
-
-echo test2 > file2
-git add .
-git commit -am file2
-
-echo "line one" > file4
-git add .
-git commit -am file4
-
-git checkout -b branch2
-
-echo "line two" >> file4
-git add .
-git commit -am file4
-
-echo "line three" >> file4
-git add .
-git commit -am file4
-
-echo "line two" >> file2
-git add .
-git commit -am file2
diff --git a/test/integration/diffing2/test.json b/test/integration/diffing2/test.json
deleted file mode 100644
index c72724877..000000000
--- a/test/integration/diffing2/test.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "description": "diffing two branches (again) and making a patch from their diff files", "speed": 10 }
diff --git a/test/integration/diffing3/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/diffing3/expected/repo/.git_keep/COMMIT_EDITMSG
deleted file mode 100644
index d72af3146..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/COMMIT_EDITMSG
+++ /dev/null
@@ -1 +0,0 @@
-asd
diff --git a/test/integration/diffing3/expected/repo/.git_keep/FETCH_HEAD b/test/integration/diffing3/expected/repo/.git_keep/FETCH_HEAD
deleted file mode 100644
index e69de29bb..000000000
diff --git a/test/integration/diffing3/expected/repo/.git_keep/HEAD b/test/integration/diffing3/expected/repo/.git_keep/HEAD
deleted file mode 100644
index 1d57c9ea7..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/branch2
diff --git a/test/integration/diffing3/expected/repo/.git_keep/config b/test/integration/diffing3/expected/repo/.git_keep/config
deleted file mode 100644
index 8ae104545..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/config
+++ /dev/null
@@ -1,10 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = true
-	bare = false
-	logallrefupdates = true
-	ignorecase = true
-	precomposeunicode = true
-[user]
-	email = CI@example.com
-	name = CI
diff --git a/test/integration/diffing3/expected/repo/.git_keep/description b/test/integration/diffing3/expected/repo/.git_keep/description
deleted file mode 100644
index 498b267a8..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/test/integration/diffing3/expected/repo/.git_keep/index b/test/integration/diffing3/expected/repo/.git_keep/index
deleted file mode 100644
index 3af23eb39..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/index and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/info/exclude b/test/integration/diffing3/expected/repo/.git_keep/info/exclude
deleted file mode 100644
index 8e9f2071f..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/info/exclude
+++ /dev/null
@@ -1,7 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
-.DS_Store
diff --git a/test/integration/diffing3/expected/repo/.git_keep/logs/HEAD b/test/integration/diffing3/expected/repo/.git_keep/logs/HEAD
deleted file mode 100644
index 0c3bb8fa2..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/logs/HEAD
+++ /dev/null
@@ -1,9 +0,0 @@
-0000000000000000000000000000000000000000 13d8ce6d541ffd4b323376e2530ccdd3bcc7b8d5 CI <CI@example.com> 1617680695 +1000	commit (initial): file0
-13d8ce6d541ffd4b323376e2530ccdd3bcc7b8d5 57695899c35539821690c4c132bd0e872a01c192 CI <CI@example.com> 1617680695 +1000	commit: file1
-57695899c35539821690c4c132bd0e872a01c192 4e2d07409901af28a47f5d3b126953a5fb8b36ee CI <CI@example.com> 1617680695 +1000	commit: file2
-4e2d07409901af28a47f5d3b126953a5fb8b36ee b25b8446022fb5fcded2bab1ed2b02828a5c4d0b CI <CI@example.com> 1617680695 +1000	commit: file4
-b25b8446022fb5fcded2bab1ed2b02828a5c4d0b b25b8446022fb5fcded2bab1ed2b02828a5c4d0b CI <CI@example.com> 1617680695 +1000	checkout: moving from master to branch2
-b25b8446022fb5fcded2bab1ed2b02828a5c4d0b ffb13702e6bc59e2806bc3a5f93500e46925b131 CI <CI@example.com> 1617680695 +1000	commit: file4
-ffb13702e6bc59e2806bc3a5f93500e46925b131 275e6a821120c07a9068a9701ed14a82eeed3117 CI <CI@example.com> 1617680695 +1000	commit: file4
-275e6a821120c07a9068a9701ed14a82eeed3117 1edd26fd03ee6243bd1513788874c6c57ef1d41a CI <CI@example.com> 1617680695 +1000	commit: file2
-1edd26fd03ee6243bd1513788874c6c57ef1d41a 93b73046d6820607f1da09399b55a145d5389ab8 CI <CI@example.com> 1617680702 +1000	commit: asd
diff --git a/test/integration/diffing3/expected/repo/.git_keep/logs/refs/heads/branch2 b/test/integration/diffing3/expected/repo/.git_keep/logs/refs/heads/branch2
deleted file mode 100644
index 388d6e906..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/logs/refs/heads/branch2
+++ /dev/null
@@ -1,5 +0,0 @@
-0000000000000000000000000000000000000000 b25b8446022fb5fcded2bab1ed2b02828a5c4d0b CI <CI@example.com> 1617680695 +1000	branch: Created from HEAD
-b25b8446022fb5fcded2bab1ed2b02828a5c4d0b ffb13702e6bc59e2806bc3a5f93500e46925b131 CI <CI@example.com> 1617680695 +1000	commit: file4
-ffb13702e6bc59e2806bc3a5f93500e46925b131 275e6a821120c07a9068a9701ed14a82eeed3117 CI <CI@example.com> 1617680695 +1000	commit: file4
-275e6a821120c07a9068a9701ed14a82eeed3117 1edd26fd03ee6243bd1513788874c6c57ef1d41a CI <CI@example.com> 1617680695 +1000	commit: file2
-1edd26fd03ee6243bd1513788874c6c57ef1d41a 93b73046d6820607f1da09399b55a145d5389ab8 CI <CI@example.com> 1617680702 +1000	commit: asd
diff --git a/test/integration/diffing3/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/diffing3/expected/repo/.git_keep/logs/refs/heads/master
deleted file mode 100644
index 2eee36176..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/logs/refs/heads/master
+++ /dev/null
@@ -1,4 +0,0 @@
-0000000000000000000000000000000000000000 13d8ce6d541ffd4b323376e2530ccdd3bcc7b8d5 CI <CI@example.com> 1617680695 +1000	commit (initial): file0
-13d8ce6d541ffd4b323376e2530ccdd3bcc7b8d5 57695899c35539821690c4c132bd0e872a01c192 CI <CI@example.com> 1617680695 +1000	commit: file1
-57695899c35539821690c4c132bd0e872a01c192 4e2d07409901af28a47f5d3b126953a5fb8b36ee CI <CI@example.com> 1617680695 +1000	commit: file2
-4e2d07409901af28a47f5d3b126953a5fb8b36ee b25b8446022fb5fcded2bab1ed2b02828a5c4d0b CI <CI@example.com> 1617680695 +1000	commit: file4
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/0c/2aa38e0600e0d2df09c2f84664d8a14f899879 b/test/integration/diffing3/expected/repo/.git_keep/objects/0c/2aa38e0600e0d2df09c2f84664d8a14f899879
deleted file mode 100644
index 38acaeff2..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/0c/2aa38e0600e0d2df09c2f84664d8a14f899879 and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/13/d8ce6d541ffd4b323376e2530ccdd3bcc7b8d5 b/test/integration/diffing3/expected/repo/.git_keep/objects/13/d8ce6d541ffd4b323376e2530ccdd3bcc7b8d5
deleted file mode 100644
index 0b6ffa3fc..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/objects/13/d8ce6d541ffd4b323376e2530ccdd3bcc7b8d5
+++ /dev/null
@@ -1,2 +0,0 @@
-x��A
-�0@Q�9�����ID��z���`�!�D���n?��j];�f@v7	IUs�!H�d�c*\Ч\�+�w����i��4����mi�	$dD������۟ܕu3t?��+�
\ No newline at end of file
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 b/test/integration/diffing3/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827
deleted file mode 100644
index f74bf2335..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442 b/test/integration/diffing3/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442
deleted file mode 100644
index 79fcadf67..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442 and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/1e/dd26fd03ee6243bd1513788874c6c57ef1d41a b/test/integration/diffing3/expected/repo/.git_keep/objects/1e/dd26fd03ee6243bd1513788874c6c57ef1d41a
deleted file mode 100644
index d27019b84..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/objects/1e/dd26fd03ee6243bd1513788874c6c57ef1d41a
+++ /dev/null
@@ -1,2 +0,0 @@
-x��A
-�@Fa�s����6���#N�b��������~��+�L5r�S݁3mE�HJJ���:"�ћ�5XN
g��x�(�B=	�P!�L�<1n0\�-����=v}�u�__���.��ʦ�4���D=�*���8͐�?b9
\ No newline at end of file
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/27/5e6a821120c07a9068a9701ed14a82eeed3117 b/test/integration/diffing3/expected/repo/.git_keep/objects/27/5e6a821120c07a9068a9701ed14a82eeed3117
deleted file mode 100644
index 4ce25a568..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/objects/27/5e6a821120c07a9068a9701ed14a82eeed3117
+++ /dev/null
@@ -1,2 +0,0 @@
-x��A
-�0E]��dfҤ("t�c$q��Ɩ��#�{|އ��Z�$|i�*�gb����-�f"�b�	�b�d�x�A)�숬>e'�;��X���v� ?���0/0��C�����^�@�Fߏ��J�h�ڣ�����n:�3�8�
\ No newline at end of file
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/2d/00bd505971a8bc7318d98e003aee708a367c85 b/test/integration/diffing3/expected/repo/.git_keep/objects/2d/00bd505971a8bc7318d98e003aee708a367c85
deleted file mode 100644
index d4270c258..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/2d/00bd505971a8bc7318d98e003aee708a367c85 and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da b/test/integration/diffing3/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da
deleted file mode 100644
index 06c9cb73d..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/3b/aaa732b89ed46a1af1b24d0d4e3b8c7375684a b/test/integration/diffing3/expected/repo/.git_keep/objects/3b/aaa732b89ed46a1af1b24d0d4e3b8c7375684a
deleted file mode 100644
index 65140e8b7..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/3b/aaa732b89ed46a1af1b24d0d4e3b8c7375684a and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/3d/b2086f780b1cf632eec29111ef395913a8ab2b b/test/integration/diffing3/expected/repo/.git_keep/objects/3d/b2086f780b1cf632eec29111ef395913a8ab2b
deleted file mode 100644
index e0473aaf4..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/3d/b2086f780b1cf632eec29111ef395913a8ab2b and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/4e/2d07409901af28a47f5d3b126953a5fb8b36ee b/test/integration/diffing3/expected/repo/.git_keep/objects/4e/2d07409901af28a47f5d3b126953a5fb8b36ee
deleted file mode 100644
index 49d0ec6d7..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/objects/4e/2d07409901af28a47f5d3b126953a5fb8b36ee
+++ /dev/null
@@ -1,3 +0,0 @@
-x��A
-�0�a�9E���LL2��#�L�`l)<�9����Ǔ���[LtꇪMʜ#��T
-���c�Y���"$fχ���1$�)���%&	�*�h)�)��M���v�i��i~�7������b<À���u���gn��R2?/8�
\ No newline at end of file
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/57/695899c35539821690c4c132bd0e872a01c192 b/test/integration/diffing3/expected/repo/.git_keep/objects/57/695899c35539821690c4c132bd0e872a01c192
deleted file mode 100644
index 6fe16bc3d..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/57/695899c35539821690c4c132bd0e872a01c192 and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/59/a0ec98e1847ca72dc35b7ab8b84f527b6af280 b/test/integration/diffing3/expected/repo/.git_keep/objects/59/a0ec98e1847ca72dc35b7ab8b84f527b6af280
deleted file mode 100644
index ed5045497..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/59/a0ec98e1847ca72dc35b7ab8b84f527b6af280 and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/8e/4cb0cd56d785ba4442a5b20e7ae5de5ae33723 b/test/integration/diffing3/expected/repo/.git_keep/objects/8e/4cb0cd56d785ba4442a5b20e7ae5de5ae33723
deleted file mode 100644
index 2920ab335..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/8e/4cb0cd56d785ba4442a5b20e7ae5de5ae33723 and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/93/b73046d6820607f1da09399b55a145d5389ab8 b/test/integration/diffing3/expected/repo/.git_keep/objects/93/b73046d6820607f1da09399b55a145d5389ab8
deleted file mode 100644
index 1dbb386fc..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/93/b73046d6820607f1da09399b55a145d5389ab8 and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/9e/88a70dc8d82dd2afbfd50176ef78e18823bc2c b/test/integration/diffing3/expected/repo/.git_keep/objects/9e/88a70dc8d82dd2afbfd50176ef78e18823bc2c
deleted file mode 100644
index 0e95eb06d..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/9e/88a70dc8d82dd2afbfd50176ef78e18823bc2c and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 b/test/integration/diffing3/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5
deleted file mode 100644
index 285df3e5f..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/b2/5b8446022fb5fcded2bab1ed2b02828a5c4d0b b/test/integration/diffing3/expected/repo/.git_keep/objects/b2/5b8446022fb5fcded2bab1ed2b02828a5c4d0b
deleted file mode 100644
index 7840a7939..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/b2/5b8446022fb5fcded2bab1ed2b02828a5c4d0b and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/d0/76cc9cc09acaa2d36fbc7a95fd3e2306494641 b/test/integration/diffing3/expected/repo/.git_keep/objects/d0/76cc9cc09acaa2d36fbc7a95fd3e2306494641
deleted file mode 100644
index 2e9066287..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/objects/d0/76cc9cc09acaa2d36fbc7a95fd3e2306494641
+++ /dev/null
@@ -1,2 +0,0 @@
-x+)JMU03c040031QH��I5`������ֶw���w.��h�T�[H
-��y�W5�Ɨ��(�|�^-�W(x9
\ No newline at end of file
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/e5/c5c5583f49a34e86ce622b59363df99e09d4c6 b/test/integration/diffing3/expected/repo/.git_keep/objects/e5/c5c5583f49a34e86ce622b59363df99e09d4c6
deleted file mode 100644
index 01ce23cee..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/e5/c5c5583f49a34e86ce622b59363df99e09d4c6 and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/e7/76522ac28860d2eba6fe98fa4fad67e798419a b/test/integration/diffing3/expected/repo/.git_keep/objects/e7/76522ac28860d2eba6fe98fa4fad67e798419a
deleted file mode 100644
index 08edf28f3..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/e7/76522ac28860d2eba6fe98fa4fad67e798419a and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/objects/ff/b13702e6bc59e2806bc3a5f93500e46925b131 b/test/integration/diffing3/expected/repo/.git_keep/objects/ff/b13702e6bc59e2806bc3a5f93500e46925b131
deleted file mode 100644
index 41ee689ed..000000000
Binary files a/test/integration/diffing3/expected/repo/.git_keep/objects/ff/b13702e6bc59e2806bc3a5f93500e46925b131 and /dev/null differ
diff --git a/test/integration/diffing3/expected/repo/.git_keep/refs/heads/branch2 b/test/integration/diffing3/expected/repo/.git_keep/refs/heads/branch2
deleted file mode 100644
index 0fd67f431..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/refs/heads/branch2
+++ /dev/null
@@ -1 +0,0 @@
-93b73046d6820607f1da09399b55a145d5389ab8
diff --git a/test/integration/diffing3/expected/repo/.git_keep/refs/heads/master b/test/integration/diffing3/expected/repo/.git_keep/refs/heads/master
deleted file mode 100644
index 1ae5bbe93..000000000
--- a/test/integration/diffing3/expected/repo/.git_keep/refs/heads/master
+++ /dev/null
@@ -1 +0,0 @@
-b25b8446022fb5fcded2bab1ed2b02828a5c4d0b
diff --git a/test/integration/diffing3/expected/repo/file0 b/test/integration/diffing3/expected/repo/file0
deleted file mode 100644
index 38143ad4a..000000000
--- a/test/integration/diffing3/expected/repo/file0
+++ /dev/null
@@ -1 +0,0 @@
-test0
diff --git a/test/integration/diffing3/expected/repo/file1 b/test/integration/diffing3/expected/repo/file1
deleted file mode 100644
index a5bce3fd2..000000000
--- a/test/integration/diffing3/expected/repo/file1
+++ /dev/null
@@ -1 +0,0 @@
-test1
diff --git a/test/integration/diffing3/expected/repo/file2 b/test/integration/diffing3/expected/repo/file2
deleted file mode 100644
index 180cf8328..000000000
--- a/test/integration/diffing3/expected/repo/file2
+++ /dev/null
@@ -1 +0,0 @@
-test2
diff --git a/test/integration/diffing3/recording.json b/test/integration/diffing3/recording.json
deleted file mode 100644
index 3075a9b2f..000000000
--- a/test/integration/diffing3/recording.json
+++ /dev/null
@@ -1 +0,0 @@
-{"KeyEvents":[{"Timestamp":487,"Mod":0,"Key":259,"Ch":0},{"Timestamp":768,"Mod":0,"Key":259,"Ch":0},{"Timestamp":1039,"Mod":0,"Key":256,"Ch":87},{"Timestamp":1303,"Mod":0,"Key":13,"Ch":13},{"Timestamp":1599,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1791,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1975,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2151,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2384,"Mod":0,"Key":13,"Ch":13},{"Timestamp":3335,"Mod":0,"Key":256,"Ch":32},{"Timestamp":3527,"Mod":0,"Key":258,"Ch":0},{"Timestamp":3679,"Mod":0,"Key":256,"Ch":32},{"Timestamp":4214,"Mod":2,"Key":16,"Ch":16},{"Timestamp":5111,"Mod":0,"Key":258,"Ch":0},{"Timestamp":5327,"Mod":0,"Key":13,"Ch":13},{"Timestamp":6006,"Mod":0,"Key":260,"Ch":0},{"Timestamp":6223,"Mod":0,"Key":260,"Ch":0},{"Timestamp":6447,"Mod":0,"Key":256,"Ch":99},{"Timestamp":6631,"Mod":0,"Key":256,"Ch":97},{"Timestamp":6671,"Mod":0,"Key":256,"Ch":115},{"Timestamp":6743,"Mod":0,"Key":256,"Ch":100},{"Timestamp":7111,"Mod":0,"Key":13,"Ch":13},{"Timestamp":7559,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]}
\ No newline at end of file
diff --git a/test/integration/diffing3/setup.sh b/test/integration/diffing3/setup.sh
deleted file mode 100644
index 4cd444a1f..000000000
--- a/test/integration/diffing3/setup.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-set -e
-
-cd $1
-
-git init
-
-git config user.email "CI@example.com"
-git config user.name "CI"
-
-echo test0 > file0
-git add .
-git commit -am file0
-
-echo test1 > file1
-git add .
-git commit -am file1
-
-echo test2 > file2
-git add .
-git commit -am file2
-
-echo "line one" > file4
-git add .
-git commit -am file4
-
-git checkout -b branch2
-
-echo "line two" >> file4
-git add .
-git commit -am file4
-
-echo "line three" >> file4
-git add .
-git commit -am file4
-
-echo "line two" >> file2
-git add .
-git commit -am file2
diff --git a/test/integration/diffing3/test.json b/test/integration/diffing3/test.json
deleted file mode 100644
index 8e427d1f4..000000000
--- a/test/integration/diffing3/test.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "description": "diffing two commits and making a patch from their diff files", "speed": 10 }