1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-30 03:23:08 +03: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<01><><EFBFBD>
<EFBFBD>0<10>a<EFBFBD>y<EFBFBD><79> <0B>L<EFBFBD><1B>]<5D>1&Ʉ
Ɩ<18><>7<EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ZoP<>Cò
}<7D>Ig.<2E>g<EFBFBD>Hڇ`,9<>ɛ<>X<EFBFBD><58>?:X<><58><EFBFBD>=O<>eE&<26>=<19><>8Rv<52>젂^}<7D><1A> <0B><><EFBFBD><EFBFBD>o<EFBFBD><6F><EFBFBD>Oi<4F>PV9<56><39>tG%<25>c<1D>:<3A><><EFBFBD>/}<7D><> _<05><>s<1F><>?<3F>

View File

@ -1,2 +0,0 @@
x<01><>A
<EFBFBD>0E<><45>)f_(3&:J)<29><>13AA<41>HZz<5A>z<>n<1F><>_<EFBFBD>۶h/<2F>T<05>z<EFBFBD>@(<28>)<29><>y"<22><><EFBFBD><EFBFBD>`'<27>,z<><7A>><3E>#<23><>`K<13>=j<12>T<EFBFBD><54>^<5E>d<EFBFBD>h<EFBFBD>TTz I<> <09>2<EFBFBD><13><11><><EFBFBD><EFBFBD>O؎Uo1o<0F><><EFBFBD><EFBFBD>/<2F><><EFBFBD><10>TZ<54><5A><EFBFBD>97e^N<><4E>yѷ<><D1B7>0_- Ax

View File

@ -1,3 +0,0 @@
x<01><>K
<EFBFBD>0@]<5D><14>d2<64><32><11><>#<23>L<EFBFBD>`m<><<3C>/<2F><><EFBFBD><Y<><59>ށ0zS<7A>rN,<01><><EFBFBD>)S<><53>A<EFBFBD><41><EFBFBD><EFBFBD>F<EFBFBD><46><EFBFBD><EFBFBD>s<EFBFBD>fKM<4B><1D>"
̶Z<EFBFBD>9Tge`*5<1F>q<EFBFBD>s<EFBFBD>N<12><><EFBFBD><EFBFBD><EFBFBD>`<60><>2N7<4E><37>e{<7B>I<EFBFBD><49>

View File

@ -1,2 +0,0 @@
x<01><>M
<EFBFBD> <10><><EFBFBD>=<3D><> <0B>ɏ<EFBFBD>PJ!<21>j

View File

@ -1 +0,0 @@
x}<7D><> <09>0=<3D><><EFBFBD> <20><>QA<>6<EFBFBD>>1`|<7C><><EFBFBD>o w<><77> <0C><><EFBFBD> j<><6A><EFBFBD><EFBFBD>yF<><46>JH7_0<5F><30><11>A<EFBFBD>𚐇<EFBFBD>} <20><15>U<EFBFBD>)<29>}<01><><EFBFBD><EFBFBD>FJ<46>{<7B>oX<6F>9<1B>o6z<36><7A>[|G<>,<2C>

View File

@ -1,3 +0,0 @@
x<01><>K
<EFBFBD>0@]<5D><14>df<64><66>@D<><44>cL<63>)<15>-5<><35>ނp<>x^<5E>k<EFBFBD>6`t<><74><EFBFBD>BA<42><41>gv<67>lk<13>i<><69>)H<16>$<24><>ؙEV<45>7<EFBFBD><37>>fJ<>@<40><>
{<7B><10>`<60>H<EFBFBD>pA;<3B>b<EFBFBD>٦y<D9A6><79><02><><72>妇<<3C><13>#<23>|<7C><>aO<61>h6<68>M5<4D>S7}m/<13>:<3A><>L<EFBFBD> QR>8

View File

@ -1 +0,0 @@
x<01><><EFBFBD> <09>0C<>v<EFBFBD>L<EFBFBD><1F>\<5C>j<EFBFBD>VО<56>W<EFBFBD><57>=<1D><05><08><><EFBFBD><EFBFBD><EFBFBD>M<<3C>i<EFBFBD>f.<2E><><EFBFBD>PU<50>M<>HT<48><54>3T<33>`Q<><51><EFBFBD>9<EFBFBD>"<22>^<5E><>h<EFBFBD>d[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i+B<><42>;<3B>~<7E>/ Y:/<2F><1B><P<>

View File

@ -1,2 +0,0 @@
x<01><>A
<EFBFBD> @Ѯ=<3D><><42>(<28>R<EFBFBD>*<2A><>ql5 <09>B<EFBFBD><42><1C><><EFBFBD>[|<7C>Z[<5B><>1^<5E>!<21><>u<EFBFBD>T)rD<72>m*<2A>kL<6B><4C>yap@LE@<40>鐵k_<6B>W<07>Ȃ>D<><44><EFBFBD><EFBFBD><EFBFBD>4f<>hJe<4A>>}<7D>=N<>>NO<4E><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[{h<><68><EFBFBD>C<><43><EFBFBD><18><>zNu<4E><75><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD><45>֗<14>Y{<<3C>

View File

@ -1,2 +0,0 @@
x<01><>K
<EFBFBD>0@]<5D><14>d<>I<EFBFBD><11><>#<23>LQ0M<30>Q<<3C>/<2F><><EFBFBD><1E><>j<EFBFBD>w0Z<1F>&3<>.<2E><>`v<12>Ț<EFBFBD>Y<EFBFBD>r<0E><><15>D<EFBFBD>^<5E>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>Ħ8<C4A6><38>f<EFBFBD>"y<>H!fq)r<><72><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD>^<5E><>6'8<><38>U><3E><>9<>V/<2F><><EFBFBD><EFBFBD>zG<><47>j<EFBFBD><6A>T<EFBFBD>?u<><75><EFBFBD><16>_m<01><><>/:@<40>

View File

@ -1,2 +0,0 @@
x<01><>I
<EFBFBD>@]<5D>)<29>^<5E><>C~w@D<>*<2A><><EFBFBD>5 <09><>Ђ<EFBFBD>7<EFBFBD><05>UPy[<5B><><EFBFBD>awi@V<><56><16><><02>C\8{]PSL<53><4C><EFBFBD>)1d<31><64>k<><12><><EFBFBD><E8A498><EFBFBD>Zw<5A><77>;;<3B>Qa<51>h<EFBFBD><68>JP<4A>ݦ<EFBFBD><DDA6>a<EFBFBD><61>0><3E><><EFBFBD><EFBFBD><EFBFBD>-o˃<6F>h/޲7t<37>̬NzN5<4E><35><EFBFBD>:<3A><36>u<EFBFBD>P_<50>?>c

View File

@ -1,3 +0,0 @@
x<01><>K
<EFBFBD>0@]<5D><14>d<>L<EFBFBD><11><>#<23>N<EFBFBD><4E>6%F<><46><16><><EFBFBD><EFBFBD>{<7B><><EFBFBD><EFBFBD>ܠ<EFBFBD>xjU:<3A>ّw<D991>^<5E>1Ȝ<31> {#<0E><>~<7E>M<EFBFBD>4<EFBFBD><34>c<EFBFBD><63>AH<41><48>\<5C><>^|t<>G+ls<6C><73><13>ɫ<>j<EFBFBD>Ra<18>:<3A>w<EFBFBD><77>u_<75><5F>e<EFBFBD><65><EFBFBD><EFBFBD>Yg<59>upֈ<70>zL5<4C>SWy<57><79><06>
<EFBFBD><06><>e)<29><><02>f@f

View File

@ -1,2 +0,0 @@
x<01><>M
<EFBFBD>0<10>a<EFBFBD>9<EFBFBD><39>I&?<3F><><EFBFBD><EFBFBD>U<EFBFBD><55><EFBFBD>,S<>߀p<><70>><3E><>Z<EFBFBD><5A>e8<65><38> 6k66<36>Ÿf<><66><EFBFBD><EFBFBD>OFs<46><73><EFBFBD>N<1E>{l<>0e<30>W<EFBFBD>F<EFBFBD>,*<2A>֕<EFBFBD>C<EFBFBD><43>.<2E>D<EFBFBD><44>ؠ<14><><1F><>4<EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD>e<65>%<25>r<03><10>JJ)<29>:Nu<4E>3ykG<6B><47><EFBFBD><EFBFBD><EFBFBD><12><><EFBFBD><17><>><3E>

View File

@ -1,2 +0,0 @@
x<01><>A
<EFBFBD> D<><44><14> <0B>k<12>B)<29><>r<EFBFBD>QH!<21>!<18><>+<2B>]

View File

@ -1 +0,0 @@
x<01><><EFBFBD> <09>0C<><43><14><>?<3F>3<EFBFBD>ƵV<>=iO<69><4F>=<1D><05><08><><EFBFBD><EFBFBD><EFBFBD>,<01>8tW<><57>@h*<2A><>&R$j<08>*y<><79>ʑs<><DC9C>8v)<29><>u㧱<75><E3A7B1>V<EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD><17>"<0F><17>

View File

@ -1,2 +0,0 @@
x<01><>A
1=<3D>s$<24><>daO<61><4F><EFBFBD>I<05>J<EFBFBD><4A><EFBFBD>w<EFBFBD>x-<2D><>ҥ<EFBFBD>k'v~<7E>@ Udw<64>"<0E><><17><>=<3D>U<EFBFBD>8H<19>C%<25><1C> <0C>_O\<5C><><10>˰O<<3C> <20>cB`k<><6B>/K<>q<EFBFBD><71>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD>K=<3D><>.<2E><>mb<6D>:k<>Y<EFBFBD><1A><><EFBFBD>ܔk{v<>YT<1A><>*w<>@<40><>{/B<>

View File

@ -1,2 +0,0 @@
x}<7D>K
<EFBFBD> <14><>Ʈ<EFBFBD><C6AE>@<40><>QAA<41><41>q<EFBFBD> <20>bZ<62>Op<4F>7<<3C>p֋WT<57>*<2A> <0C>4<EFBFBD><34><EFBFBD>F<EFBFBD><46>-<16><><10>&Ox<4F>;

View File

@ -1,2 +0,0 @@
x<01><>A
<EFBFBD>0E]<5D><14>d<>I<EFBFBD>D<><44>z<EFBFBD>I:<3A>cJ<63><4A><EFBFBD>

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