1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2024-11-28 09:08:41 +02:00

add integration tests for cherry picking

This commit is contained in:
Jesse Duffield 2022-09-16 22:15:02 -07:00
parent 9351af3829
commit 74acb3e86a
166 changed files with 351 additions and 404 deletions

View File

@ -53,10 +53,17 @@ func (gui *Gui) modeStatuses() []modeStatus {
{
isActive: gui.State.Modes.CherryPicking.Active,
description: func() string {
copiedCount := len(gui.State.Modes.CherryPicking.CherryPickedCommits)
text := gui.c.Tr.LcCommitsCopied
if copiedCount == 1 {
text = gui.c.Tr.LcCommitCopied
}
return gui.withResetButton(
fmt.Sprintf(
"%d commits copied",
len(gui.State.Modes.CherryPicking.CherryPickedCommits),
"%d %s",
copiedCount,
text,
),
style.FgCyan,
)

View File

@ -507,6 +507,8 @@ type TranslationSet struct {
EmptyOutput string
Patch string
CustomPatch string
LcCommitsCopied string
LcCommitCopied string
Actions Actions
Bisect Bisect
}
@ -1147,6 +1149,8 @@ func EnglishTranslationSet() TranslationSet {
EmptyOutput: "<empty output>",
Patch: "Patch",
CustomPatch: "Custom patch",
LcCommitsCopied: "commits copied",
LcCommitCopied: "commit copied",
Actions: Actions{
// TODO: combine this with the original keybinding descriptions (those are all in lowercase atm)
CheckoutCommit: "Checkout commit",

View File

@ -217,7 +217,7 @@ func (self *Assert) matchString(matcher *matcher, context string, getValue func(
}
func (self *Assert) assertWithRetries(test func() (bool, string)) {
waitTimes := []int{0, 1, 5, 10, 200, 500, 1000, 2000}
waitTimes := []int{0, 1, 5, 10, 200, 500, 1000, 2000, 4000}
var message string
for _, waitTime := range waitTimes {

View File

@ -76,6 +76,11 @@ func (self *Input) Confirm() {
self.pressKey(self.keys.Universal.Confirm)
}
// i.e. same as Confirm
func (self *Input) Enter() {
self.pressKey(self.keys.Universal.Confirm)
}
// i.e. pressing escape
func (self *Input) Cancel() {
self.pressKey(self.keys.Universal.Return)

View File

@ -3,59 +3,16 @@ package branch
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
"github.com/jesseduffield/lazygit/pkg/integration/tests/shared"
)
var originalFileContent = `
This
Is
The
Original
File
`
var firstChangeFileContent = `
This
Is
The
First Change
File
`
var secondChangeFileContent = `
This
Is
The
Second Change
File
`
// prepares us for a rebase that has conflicts
var commonRebaseSetup = func(shell *Shell) {
shell.
NewBranch("original-branch").
EmptyCommit("one").
EmptyCommit("two").
EmptyCommit("three").
CreateFileAndAdd("file", originalFileContent).
Commit("original").
NewBranch("first-change-branch").
UpdateFileAndAdd("file", firstChangeFileContent).
Commit("first change").
Checkout("original-branch").
NewBranch("second-change-branch").
UpdateFileAndAdd("file", secondChangeFileContent).
Commit("second change").
EmptyCommit("second-change-branch unrelated change").
Checkout("first-change-branch")
}
var Rebase = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Rebase onto another branch, deal with the conflicts.",
ExtraCmdArgs: "",
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
commonRebaseSetup(shell)
shared.MergeConflictsSetup(shell)
},
Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) {
input.SwitchToBranchesWindow()

View File

@ -3,6 +3,7 @@ package branch
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
"github.com/jesseduffield/lazygit/pkg/integration/tests/shared"
)
var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{
@ -11,7 +12,7 @@ var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
commonRebaseSetup(shell)
shared.MergeConflictsSetup(shell)
// addin a couple additional commits so that we can drop one
shell.EmptyCommit("to remove")
shell.EmptyCommit("to keep")

View File

@ -0,0 +1,66 @@
package cherry_pick
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var CherryPick = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Cherry pick commits from the subcommits view, without conflicts",
ExtraCmdArgs: "",
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.
EmptyCommit("base").
NewBranch("first-branch").
NewBranch("second-branch").
Checkout("first-branch").
EmptyCommit("one").
EmptyCommit("two").
Checkout("second-branch").
EmptyCommit("three").
EmptyCommit("four").
Checkout("first-branch")
},
Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) {
input.SwitchToBranchesWindow()
assert.CurrentViewName("localBranches")
assert.MatchSelectedLine(Contains("first-branch"))
input.NextItem()
assert.MatchSelectedLine(Contains("second-branch"))
input.Enter()
assert.CurrentViewName("subCommits")
assert.MatchSelectedLine(Contains("four"))
input.PressKeys(keys.Commits.CherryPickCopy)
assert.MatchViewContent("information", Contains("1 commit copied"))
input.NextItem()
assert.MatchSelectedLine(Contains("three"))
input.PressKeys(keys.Commits.CherryPickCopy)
assert.MatchViewContent("information", Contains("2 commits copied"))
input.SwitchToCommitsWindow()
assert.CurrentViewName("commits")
assert.MatchSelectedLine(Contains("two"))
input.PressKeys(keys.Commits.PasteCommits)
assert.InAlert()
assert.MatchCurrentViewContent(Contains("Are you sure you want to cherry-pick the copied commits onto this branch?"))
input.Confirm()
assert.CurrentViewName("commits")
assert.MatchSelectedLine(Contains("four"))
input.NextItem()
assert.MatchSelectedLine(Contains("three"))
input.NextItem()
assert.MatchSelectedLine(Contains("two"))
assert.MatchViewContent("information", Contains("2 commits copied"))
input.PressKeys(keys.Universal.Return)
assert.MatchViewContent("information", NotContains("commits copied"))
},
})

View File

@ -0,0 +1,87 @@
package cherry_pick
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
"github.com/jesseduffield/lazygit/pkg/integration/tests/shared"
)
var CherryPickConflicts = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Cherry pick commits from the subcommits view, with conflicts",
ExtraCmdArgs: "",
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shared.MergeConflictsSetup(shell)
},
Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) {
input.SwitchToBranchesWindow()
assert.CurrentViewName("localBranches")
assert.MatchSelectedLine(Contains("first-change-branch"))
input.NextItem()
assert.MatchSelectedLine(Contains("second-change-branch"))
input.Enter()
assert.CurrentViewName("subCommits")
assert.MatchSelectedLine(Contains("second-change-branch unrelated change"))
input.PressKeys(keys.Commits.CherryPickCopy)
assert.MatchViewContent("information", Contains("1 commit copied"))
input.NextItem()
assert.MatchSelectedLine(Contains("second change"))
input.PressKeys(keys.Commits.CherryPickCopy)
assert.MatchViewContent("information", Contains("2 commits copied"))
input.SwitchToCommitsWindow()
assert.CurrentViewName("commits")
assert.MatchSelectedLine(Contains("first change"))
input.PressKeys(keys.Commits.PasteCommits)
assert.InAlert()
assert.MatchCurrentViewContent(Contains("Are you sure you want to cherry-pick the copied commits onto this branch?"))
input.Confirm()
assert.MatchCurrentViewContent(Contains("Conflicts!"))
input.Confirm()
assert.CurrentViewName("files")
assert.MatchSelectedLine(Contains("file"))
// not using Confirm() convenience method because I suspect we might change this
// keybinding to something more bespoke
input.PressKeys(keys.Universal.Confirm)
assert.CurrentViewName("mergeConflicts")
// picking 'Second change'
input.NextItem()
input.PrimaryAction()
assert.InConfirm()
assert.MatchCurrentViewContent(Contains("all merge conflicts resolved. Continue?"))
input.Confirm()
assert.CurrentViewName("files")
assert.WorkingTreeFileCount(0)
input.SwitchToCommitsWindow()
assert.CurrentViewName("commits")
assert.MatchSelectedLine(Contains("second-change-branch unrelated change"))
input.NextItem()
assert.MatchSelectedLine(Contains("second change"))
// because we picked 'Second change' when resolving the conflict,
// we now see this commit as having replaced First Change with Second Change,
// as opposed to replacing 'Original' with 'Second change'
assert.MatchMainViewContent(Contains("-First Change"))
assert.MatchMainViewContent(Contains("+Second Change"))
input.NextItem()
assert.MatchSelectedLine(Contains("first change"))
assert.MatchViewContent("information", Contains("2 commits copied"))
input.PressKeys(keys.Universal.Return)
assert.MatchViewContent("information", NotContains("commits copied"))
},
})

View File

@ -0,0 +1 @@
This package contains shared helper functions for tests. It is not intended to contain any actual tests itself.

View File

@ -0,0 +1,49 @@
package shared
import (
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var OriginalFileContent = `
This
Is
The
Original
File
`
var FirstChangeFileContent = `
This
Is
The
First Change
File
`
var SecondChangeFileContent = `
This
Is
The
Second Change
File
`
// prepares us for a rebase/merge that has conflicts
var MergeConflictsSetup = func(shell *Shell) {
shell.
NewBranch("original-branch").
EmptyCommit("one").
EmptyCommit("two").
EmptyCommit("three").
CreateFileAndAdd("file", OriginalFileContent).
Commit("original").
NewBranch("first-change-branch").
UpdateFileAndAdd("file", FirstChangeFileContent).
Commit("first change").
Checkout("original-branch").
NewBranch("second-change-branch").
UpdateFileAndAdd("file", SecondChangeFileContent).
Commit("second change").
EmptyCommit("second-change-branch unrelated change").
Checkout("first-change-branch")
}

View File

@ -11,6 +11,7 @@ import (
"github.com/jesseduffield/lazygit/pkg/integration/components"
"github.com/jesseduffield/lazygit/pkg/integration/tests/bisect"
"github.com/jesseduffield/lazygit/pkg/integration/tests/branch"
"github.com/jesseduffield/lazygit/pkg/integration/tests/cherry_pick"
"github.com/jesseduffield/lazygit/pkg/integration/tests/commit"
"github.com/jesseduffield/lazygit/pkg/integration/tests/custom_commands"
"github.com/jesseduffield/lazygit/pkg/integration/tests/interactive_rebase"
@ -33,6 +34,8 @@ var tests = []*components.IntegrationTest{
custom_commands.MenuFromCommand,
bisect.Basic,
bisect.FromOtherBranch,
cherry_pick.CherryPick,
cherry_pick.CherryPickConflicts,
}
func GetTests() []*components.IntegrationTest {
@ -55,6 +58,11 @@ func GetTests() []*components.IntegrationTest {
return nil
}
// the shared directory won't itself contain tests: only shared helper functions
if filepath.Base(filepath.Dir(path)) == "shared" {
return nil
}
nameFromPath := components.TestNameFromFilePath(path)
if !testNamesSet.Includes(nameFromPath) {
missingTestNames = append(missingTestNames, nameFromPath)

View File

@ -1,15 +0,0 @@
fourth commit on develop
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# interactive rebase in progress; onto 696a8fd
# Last commands done (2 commands done):
# pick 234e2fa third commit on develop
# pick 0556e5d fourth commit on develop
# No commands remaining.
# You are currently rebasing branch 'other_branch' on '696a8fd'.
#
# Changes to be committed:
# modified: file5
#

View File

@ -1 +0,0 @@
ref: refs/heads/other_branch

View File

@ -1 +0,0 @@
696a8fd43c580b3bed203977faab4566b052a4e4

View File

@ -1 +0,0 @@
0556e5da1cda4e150d6cc1182be6efdb061f59fe

View File

@ -1,40 +0,0 @@
0000000000000000000000000000000000000000 2cf63d6da8c52131dd79622f8572b44a1267e420 CI <CI@example.com> 1617673072 +1000 commit (initial): first commit
2cf63d6da8c52131dd79622f8572b44a1267e420 2cf63d6da8c52131dd79622f8572b44a1267e420 CI <CI@example.com> 1617673072 +1000 checkout: moving from master to feature/cherry-picking
2cf63d6da8c52131dd79622f8572b44a1267e420 e4aa98b835d0a871d9ea02e6d286f0fbb2204cdc CI <CI@example.com> 1617673072 +1000 commit: first commit freshman year
e4aa98b835d0a871d9ea02e6d286f0fbb2204cdc ef029771f117b5f31c972dfa546037662e243ca7 CI <CI@example.com> 1617673072 +1000 commit: second commit subway eat fresh
ef029771f117b5f31c972dfa546037662e243ca7 2493c87610e0a9b8edfca592cb01a027f60ce587 CI <CI@example.com> 1617673072 +1000 commit: third commit fresh
2493c87610e0a9b8edfca592cb01a027f60ce587 d8e5ca46d2bbd7c115e5849e637efe2361203368 CI <CI@example.com> 1617673072 +1000 commit: fourth commit cool
d8e5ca46d2bbd7c115e5849e637efe2361203368 78a5ec82970200538b70f5ac61c18acb45ccb8ee CI <CI@example.com> 1617673072 +1000 commit: fifth commit nice
78a5ec82970200538b70f5ac61c18acb45ccb8ee 19079c78db18112c5a2720896a040014a2d05f6d CI <CI@example.com> 1617673072 +1000 commit: sixth commit haha
19079c78db18112c5a2720896a040014a2d05f6d 4520f99d650662a3f597a200fea5f2599f528180 CI <CI@example.com> 1617673072 +1000 commit: seventh commit yeah
4520f99d650662a3f597a200fea5f2599f528180 9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 CI <CI@example.com> 1617673072 +1000 commit: eighth commit woo
9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 CI <CI@example.com> 1617673072 +1000 checkout: moving from feature/cherry-picking to develop
9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 7923e4a952f4b169373b0389be6a9db3cd929547 CI <CI@example.com> 1617673072 +1000 commit: first commit on develop
7923e4a952f4b169373b0389be6a9db3cd929547 2cf63d6da8c52131dd79622f8572b44a1267e420 CI <CI@example.com> 1617673072 +1000 checkout: moving from develop to master
2cf63d6da8c52131dd79622f8572b44a1267e420 bfcc5725cd2ef871ff804996f4e02beef3e4dec2 CI <CI@example.com> 1617673072 +1000 commit: first commit on master
bfcc5725cd2ef871ff804996f4e02beef3e4dec2 7923e4a952f4b169373b0389be6a9db3cd929547 CI <CI@example.com> 1617673072 +1000 checkout: moving from master to develop
7923e4a952f4b169373b0389be6a9db3cd929547 7317cf7580efd92f974c8dfb3cde84eded8dafec CI <CI@example.com> 1617673072 +1000 commit: second commit on develop
7317cf7580efd92f974c8dfb3cde84eded8dafec bfcc5725cd2ef871ff804996f4e02beef3e4dec2 CI <CI@example.com> 1617673072 +1000 checkout: moving from develop to master
bfcc5725cd2ef871ff804996f4e02beef3e4dec2 f4ffac820a371104fe611d81bc13a45b70a3ebb3 CI <CI@example.com> 1617673072 +1000 commit: second commit on master
f4ffac820a371104fe611d81bc13a45b70a3ebb3 7317cf7580efd92f974c8dfb3cde84eded8dafec CI <CI@example.com> 1617673072 +1000 checkout: moving from master to develop
7317cf7580efd92f974c8dfb3cde84eded8dafec 234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d CI <CI@example.com> 1617673072 +1000 commit: third commit on develop
234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d f4ffac820a371104fe611d81bc13a45b70a3ebb3 CI <CI@example.com> 1617673072 +1000 checkout: moving from develop to master
f4ffac820a371104fe611d81bc13a45b70a3ebb3 facb56c48e4718f71c08116153c93d87bc699671 CI <CI@example.com> 1617673072 +1000 commit: third commit on master
facb56c48e4718f71c08116153c93d87bc699671 234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d CI <CI@example.com> 1617673072 +1000 checkout: moving from master to develop
234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d 0556e5da1cda4e150d6cc1182be6efdb061f59fe CI <CI@example.com> 1617673072 +1000 commit: fourth commit on develop
0556e5da1cda4e150d6cc1182be6efdb061f59fe facb56c48e4718f71c08116153c93d87bc699671 CI <CI@example.com> 1617673072 +1000 checkout: moving from develop to master
facb56c48e4718f71c08116153c93d87bc699671 339e2d062760be9ecdb4bb90f97bdb0e634e7831 CI <CI@example.com> 1617673072 +1000 commit: fourth commit on master
339e2d062760be9ecdb4bb90f97bdb0e634e7831 339e2d062760be9ecdb4bb90f97bdb0e634e7831 CI <CI@example.com> 1617673072 +1000 checkout: moving from master to base_branch
339e2d062760be9ecdb4bb90f97bdb0e634e7831 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 commit: file
5d2484f3cb6ce658e296526c48e1a376b2790dfc 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 checkout: moving from base_branch to other_branch
5d2484f3cb6ce658e296526c48e1a376b2790dfc 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 checkout: moving from other_branch to base_branch
5d2484f3cb6ce658e296526c48e1a376b2790dfc 68728b56ed31d03ca94496b9e2a45c62ba0f4e8f CI <CI@example.com> 1617673072 +1000 commit: file changed
68728b56ed31d03ca94496b9e2a45c62ba0f4e8f 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 checkout: moving from base_branch to other_branch
5d2484f3cb6ce658e296526c48e1a376b2790dfc 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673078 +1000 rebase -i (start): checkout HEAD
5d2484f3cb6ce658e296526c48e1a376b2790dfc 65c0438e428cd1aa94588eaa52eb7ebad7ec62fd CI <CI@example.com> 1617673078 +1000 rebase -i (pick): second commit subway eat fresh
65c0438e428cd1aa94588eaa52eb7ebad7ec62fd 16f2bcca6ce7bcc17277103a5555072a6c3322a2 CI <CI@example.com> 1617673078 +1000 rebase -i (pick): third commit fresh
16f2bcca6ce7bcc17277103a5555072a6c3322a2 696a8fd43c580b3bed203977faab4566b052a4e4 CI <CI@example.com> 1617673078 +1000 rebase -i (pick): fourth commit cool
696a8fd43c580b3bed203977faab4566b052a4e4 696a8fd43c580b3bed203977faab4566b052a4e4 CI <CI@example.com> 1617673078 +1000 rebase -i (finish): returning to refs/heads/other_branch
696a8fd43c580b3bed203977faab4566b052a4e4 696a8fd43c580b3bed203977faab4566b052a4e4 CI <CI@example.com> 1617673084 +1000 rebase -i (start): checkout HEAD
696a8fd43c580b3bed203977faab4566b052a4e4 b8ab98a9ab0599193a3f41a9cc5cb988283e6722 CI <CI@example.com> 1617673088 +1000 rebase -i (continue): fourth commit on develop
b8ab98a9ab0599193a3f41a9cc5cb988283e6722 b8ab98a9ab0599193a3f41a9cc5cb988283e6722 CI <CI@example.com> 1617673088 +1000 rebase -i (finish): returning to refs/heads/other_branch

View File

@ -1,3 +0,0 @@
0000000000000000000000000000000000000000 339e2d062760be9ecdb4bb90f97bdb0e634e7831 CI <CI@example.com> 1617673072 +1000 branch: Created from HEAD
339e2d062760be9ecdb4bb90f97bdb0e634e7831 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 commit: file
5d2484f3cb6ce658e296526c48e1a376b2790dfc 68728b56ed31d03ca94496b9e2a45c62ba0f4e8f CI <CI@example.com> 1617673072 +1000 commit: file changed

View File

@ -1,5 +0,0 @@
0000000000000000000000000000000000000000 9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 CI <CI@example.com> 1617673072 +1000 branch: Created from HEAD
9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 7923e4a952f4b169373b0389be6a9db3cd929547 CI <CI@example.com> 1617673072 +1000 commit: first commit on develop
7923e4a952f4b169373b0389be6a9db3cd929547 7317cf7580efd92f974c8dfb3cde84eded8dafec CI <CI@example.com> 1617673072 +1000 commit: second commit on develop
7317cf7580efd92f974c8dfb3cde84eded8dafec 234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d CI <CI@example.com> 1617673072 +1000 commit: third commit on develop
234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d 0556e5da1cda4e150d6cc1182be6efdb061f59fe CI <CI@example.com> 1617673072 +1000 commit: fourth commit on develop

View File

@ -1,9 +0,0 @@
0000000000000000000000000000000000000000 2cf63d6da8c52131dd79622f8572b44a1267e420 CI <CI@example.com> 1617673072 +1000 branch: Created from HEAD
2cf63d6da8c52131dd79622f8572b44a1267e420 e4aa98b835d0a871d9ea02e6d286f0fbb2204cdc CI <CI@example.com> 1617673072 +1000 commit: first commit freshman year
e4aa98b835d0a871d9ea02e6d286f0fbb2204cdc ef029771f117b5f31c972dfa546037662e243ca7 CI <CI@example.com> 1617673072 +1000 commit: second commit subway eat fresh
ef029771f117b5f31c972dfa546037662e243ca7 2493c87610e0a9b8edfca592cb01a027f60ce587 CI <CI@example.com> 1617673072 +1000 commit: third commit fresh
2493c87610e0a9b8edfca592cb01a027f60ce587 d8e5ca46d2bbd7c115e5849e637efe2361203368 CI <CI@example.com> 1617673072 +1000 commit: fourth commit cool
d8e5ca46d2bbd7c115e5849e637efe2361203368 78a5ec82970200538b70f5ac61c18acb45ccb8ee CI <CI@example.com> 1617673072 +1000 commit: fifth commit nice
78a5ec82970200538b70f5ac61c18acb45ccb8ee 19079c78db18112c5a2720896a040014a2d05f6d CI <CI@example.com> 1617673072 +1000 commit: sixth commit haha
19079c78db18112c5a2720896a040014a2d05f6d 4520f99d650662a3f597a200fea5f2599f528180 CI <CI@example.com> 1617673072 +1000 commit: seventh commit yeah
4520f99d650662a3f597a200fea5f2599f528180 9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 CI <CI@example.com> 1617673072 +1000 commit: eighth commit woo

View File

@ -1,5 +0,0 @@
0000000000000000000000000000000000000000 2cf63d6da8c52131dd79622f8572b44a1267e420 CI <CI@example.com> 1617673072 +1000 commit (initial): first commit
2cf63d6da8c52131dd79622f8572b44a1267e420 bfcc5725cd2ef871ff804996f4e02beef3e4dec2 CI <CI@example.com> 1617673072 +1000 commit: first commit on master
bfcc5725cd2ef871ff804996f4e02beef3e4dec2 f4ffac820a371104fe611d81bc13a45b70a3ebb3 CI <CI@example.com> 1617673072 +1000 commit: second commit on master
f4ffac820a371104fe611d81bc13a45b70a3ebb3 facb56c48e4718f71c08116153c93d87bc699671 CI <CI@example.com> 1617673072 +1000 commit: third commit on master
facb56c48e4718f71c08116153c93d87bc699671 339e2d062760be9ecdb4bb90f97bdb0e634e7831 CI <CI@example.com> 1617673072 +1000 commit: fourth commit on master

View File

@ -1,3 +0,0 @@
0000000000000000000000000000000000000000 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 branch: Created from HEAD
5d2484f3cb6ce658e296526c48e1a376b2790dfc 696a8fd43c580b3bed203977faab4566b052a4e4 CI <CI@example.com> 1617673078 +1000 rebase -i (finish): refs/heads/other_branch onto 5d2484f3cb6ce658e296526c48e1a376b2790dfc
696a8fd43c580b3bed203977faab4566b052a4e4 b8ab98a9ab0599193a3f41a9cc5cb988283e6722 CI <CI@example.com> 1617673088 +1000 rebase -i (finish): refs/heads/other_branch onto 696a8fd43c580b3bed203977faab4566b052a4e4

View File

@ -1,4 +0,0 @@
x…ÎË
Â0…a×yŠÙ ’Lšˆ]õ1&É„
Æ–ÁÇ7 {·‡ÿƒ“¶ZoPšCoÌ€
}ÒIg.ÊgËHÚ‡`,9ÚÉ›’XŠ�?:X“ä¤=OƒeE&ã=äè8Rvœì ‚^}ÝÌ œçåÊoªû�Oi«PV9ë´tG%¥c§:ÿÉý/}½µ _¥ñsèÿ?�

View File

@ -1,2 +0,0 @@
x�ŽA
ƒ0E»Î)f_(3&:J)¸ò13AA�HZzüz�nÿñ_ÌÛ¶h/åTßzá@(�)Ääy"¶ˆ“Ã`'—,z´Š>š#œº`K·=jßTÁÅ^Òd£hïTTz I£ ¯2ç†îÃøÔOØŽUo1o Ž¸«/ÜÀ•ÑTZ£Šþ97e^N�ŸyÑ·®ù0_- Ax

View File

@ -1,3 +0,0 @@
x�ŽK
Â0@]ç³d2ùŒ¡«#™L¨`m‰<¾/àöñ<Y—åÞ�0zS…rN,‹¤ì)SŽ¤A˜¥ˆŠFÂâ†èsñfKMŸ´" ̶ZË9Tge`*5ÑqÜsòN›ôîóÚ`œà2N7ý¤e{èIÖå
6ZŽì� ŽÍN÷©®ê¦Ï÷VàWAmúšÍÌó>Õ

View File

@ -1,2 +0,0 @@
xŤÎM
Ă †á®=Ĺě ĹÉŹŁPJ!«CÇ‘j Ö@Ź_ˇčöă}ŕă’óŁÁ€úÔŞŚÓ„E’36±›‘’ö1yëC’Gµű*ŻÉs� OV&B›Y[ě~ŮŤŃR`ăś!Tţh[©°¬p]Ö»||Ţźrá’oĐs24jŕŚZkŐ×~ŞÉźąJĺ¨m��ň‚ěß]«/ ů@Ö

View File

@ -1 +0,0 @@
x}�Ë €0=§Š­  ÉQAÁ6¢>1`|’�¶o wç¸ ³ËÉ j¥«¶€yFÁ×JH7_0ˆÖâAžðš�‡ƒ} ÑþUÇ)«}�ÒÔìFJ™{ÖoXÙ9‘o6zèä[|GÊ,Î

View File

@ -1,3 +0,0 @@
x�ŽK
Â0@]ç³dfÚü@DèÊcL’)Œ-5ŠÞÞ‚pûx^žk½6`t»¶ªBA‡£gvžlköi”Â)H¤$¥ÄØ™EV½7 ˆ>fJ¢@ÄÙ
{Æ�`�H½pA;ºbäÙ¦y…áÇárÖ·Ô妇<×�#ï|‡žaOˆh6ºM5ýS7}m/ü:ø¨Læ QR>8

View File

@ -1 +0,0 @@
xå�Ñ €0CývŠLÐÅ\ãj�VО´WÄí=Àü�„äãùM<†iìf.Œµ‚PUÊM¤HTá™3T¶`Q‘–¢9ƒ"×^òÂh‡d[éºóÓØËi+B�Ø;ç~¥/ Y:/–¸<PÃ

View File

@ -1,2 +0,0 @@
x�ÎA
à @Ñ®=…ûBщÎ(”RÈ*ÇÐql5 ÁB�ß¡ÛÏ[|ÞZ[º¶1^ú!¢«uÈT)rD�m*†kL’Åyap@LE@íé�µk_ÀWÎÈ‚>Dô€ì‚Ø4f hJe•>}Þ=Nú>NOù¦¶¿åÆ[{h‹–�C ¯Ö£ÎzNuù“«º¼EóœÖ—õY{<–

View File

@ -1,2 +0,0 @@
xŤŽK
Â0@]çłd’Ióˇ«#ÉLQ0M©Q<ľ/ŕöńĽŇj˝w0Zú&3“.’Ľ`v�Čš€YČrĚÁćD�^­i“Ą�Ź†Ä¦8�Ůfí"yĘH!fq)r¦ÂŃÄÁz•^ýÖ6'8ŹÓU>©®9•V/ ťöÎzGŤ�j§űT—?uő”҆_m–·<ÚŞľ/:@ë

View File

@ -1,2 +0,0 @@
x█▌I
б@]В)Ч^░ъC~w@Dх*гХА5 ≤│п┌г7ЮэUPy[√╧▒awi@Vю╗²исC\8{]PSLбБ┼)1d╣гkёпЕХ╓≤■┼оZwХ┌;;КQa╛hцжJPЯщ╕М═a╓Ш0>Я┴кЧб-oк┐╢h/ч╡7tул╛NzN5Э╘╚:в6я╞╒uнP_┼?>c

View File

@ -1,3 +0,0 @@
x�ŽK
Â0@]ç³dÒLó¡«#™N°Ð6%Fñø¼€ÛÇ{ð¸¬ëÜ ÓxjU:²Ù‘w‚^¬1Èœ„ {#µ¦~êM¶4‘Úc•­AHÉó\ÐÄ^|tÉG+ls Ä†É«øj�Raá:ŒwùÄu_äÂe½�¶ÚYgÐupÖˆ¨zL5ùSWy®Ï¿
Ê“¼e)»ú˜f@f

View File

@ -1,2 +0,0 @@
x�ÎM
Â0†a×9ÅìI&?“€ˆÐU�‘¦,SÒ߀pûñ>ð¥ZÊÖe8õÆ 6k66øŸf™ƒ�ÆOFs  �N³{lü0e§W·FŸ,*­Ö•‚CÌÞ.ÆD…ŽØ ñݵÁ4Ãušïü‰eò%Õrå9Ò’ÎJJ)Æ:Nuþ3ykG‡Ÿ‚ú‚��Å�¼>¢

View File

@ -1,2 +0,0 @@
x��A
Γ D»φξ εkΏB)…¬r�QH!©!θρ+τ] ΜΌ“Κ¶½�¶4\κ!Ά3ΨΒεμζ ‡υΤ΅Kήqί1Ά70¤vςnbΪΚΞ�Bτ’η„!ΨΙ€,Ο�’ �ΞΊ”C�“Ύ�ΣS>ΨφUn©lm�aΗ±ΥWCD�µνT•?q5—σ¨‹ώi-Κ�ΎΛ?

View File

@ -1 +0,0 @@
xĺ�Ń €0Cýî™ ?Š3¸ĆµV¨=iOÄí=Ŕü�„äă…,ý8tWĆÚ@h*ő‚&R$jĚ*y¶¨Ę‘s-Üś”Č8v)¶Ňu㧱—ÓV„HęĽ÷żŇ�"ťË µćPż

View File

@ -1,2 +0,0 @@
x�ŽA
1=çs$™ÄdaOûŒÙIãJŒ ¿wÁx-ºšÒ¥Ök'v~Ó@ Udw€"°ÙŽ˜=„Uç8HÌC%ú³ º_O\Îé™Ë°O<‡ ŽcB`käÕ/K£q¢ã8�ñ–ú¸a§K=‘‹.ÅämbÚ:k­YéÕñçÜ”k{vúYTž—*wú@šù{/BÒ

View File

@ -1,2 +0,0 @@
x}ÍK
€ …áĆ®â¬@Š°QAAŰčqĂ ˝bZŰOpŢ7<üpÖ‹WTµ*Ú ó4Ś‚íF�Ž-„Ó‚&Ox—; šýM˘ËţSĂ1Ą}†R©†Ô.ĄÄÁŃŤŤŤ9ŇĎN]ěÄs -#

View File

@ -1,2 +0,0 @@
x�ŽA
Â0E]ç³d¦I“D„®zŒI:¡cJŒàñ x·ÿ½?–œ÷N§VE` ç9¹õ¤½µ£÷DΠ�‚˜ÕøÄÆk1œÔÁUž ’I‰£�µ#B“Ä­žB$Íf ® A+~·­T˜¸ÎË]>œ�‡\bÉ7 KÎ:�n€3!¢êk?ÕäO]µm¯+ü*(OÈüê±úèë?X

View File

@ -1 +0,0 @@
68728b56ed31d03ca94496b9e2a45c62ba0f4e8f

View File

@ -1 +0,0 @@
0556e5da1cda4e150d6cc1182be6efdb061f59fe

View File

@ -1 +0,0 @@
9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048

View File

@ -1 +0,0 @@
339e2d062760be9ecdb4bb90f97bdb0e634e7831

View File

@ -1 +0,0 @@
b8ab98a9ab0599193a3f41a9cc5cb988283e6722

View File

@ -1 +0,0 @@
this is file number 3 that I'm going to cherry-pick

View File

@ -1 +0,0 @@
this is file number 4 that I'm going to cherry-pick

View File

@ -1 +0,0 @@
this is file number 5 that I'm going to cherry-pick

Some files were not shown because too many files have changed in this diff Show More