1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-03-19 21:28:28 +02:00

Merge pull request #2465 from jesseduffield/migrate-rebase-tests

This commit is contained in:
Jesse Duffield 2023-02-22 19:40:12 +11:00 committed by GitHub
commit f0572238cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
353 changed files with 536 additions and 972 deletions

View File

@ -95,17 +95,15 @@ func (self *RebaseCommands) GenericAmend(commits []*models.Commit, index int, f
}
func (self *RebaseCommands) MoveCommitDown(commits []*models.Commit, index int) error {
// we must ensure that we have at least two commits after the selected one
if len(commits) <= index+2 {
// assuming they aren't picking the bottom commit
return errors.New(self.Tr.NoRoom)
}
orderedCommits := append(commits[0:index], commits[index+1], commits[index])
// not appending to original slice so that we don't mutate it
orderedCommits := append([]*models.Commit{}, commits[0:index]...)
orderedCommits = append(orderedCommits, commits[index+1], commits[index])
todoLines := self.BuildTodoLinesSingleAction(orderedCommits, "pick")
return self.PrepareInteractiveRebaseCommand(commits[index+2].Sha, todoLines, true).Run()
baseShaOrRoot := getBaseShaOrRoot(commits, index+2)
return self.PrepareInteractiveRebaseCommand(baseShaOrRoot, todoLines, true).Run()
}
func (self *RebaseCommands) InteractiveRebase(commits []*models.Commit, index int, action string) error {
@ -189,12 +187,9 @@ func (self *RebaseCommands) BuildSingleActionTodo(commits []*models.Commit, acti
}
})
baseSha := "--root"
if baseIndex < len(commits) {
baseSha = commits[baseIndex].Sha
}
baseShaOrRoot := getBaseShaOrRoot(commits, baseIndex)
return todoLines, baseSha, nil
return todoLines, baseShaOrRoot, nil
}
// AmendTo amends the given commit with whatever files are staged
@ -418,3 +413,17 @@ func (self *TodoLine) ToString() string {
return self.Action + " " + self.Commit.Sha + " " + self.Commit.Name + "\n"
}
}
// we can't start an interactive rebase from the first commit without passing the
// '--root' arg
func getBaseShaOrRoot(commits []*models.Commit, index int) string {
// We assume that the commits slice contains the initial commit of the repo.
// Technically this assumption could prove false, but it's unlikely you'll
// be starting a rebase from 300 commits ago (which is the original commit limit
// at time of writing)
if index < len(commits) {
return commits[index].Sha
} else {
return "--root"
}
}

View File

@ -358,6 +358,12 @@ func (self *LocalCommitsController) handleMidRebaseCommand(action string, commit
func (self *LocalCommitsController) moveDown(commit *models.Commit) error {
index := self.context().GetSelectedLineIdx()
commits := self.model.Commits
// can't move past the initial commit
if index >= len(commits)-1 {
return nil
}
if commit.Status == "rebasing" {
if commits[index+1].Status != "rebasing" {
return nil

View File

@ -0,0 +1,84 @@
package interactive_rebase
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var Move = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Directly move a commit all the way down and all the way back up",
ExtraCmdArgs: "",
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.CreateNCommits(4)
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Commits().
Focus().
Lines(
Contains("commit 04").IsSelected(),
Contains("commit 03"),
Contains("commit 02"),
Contains("commit 01"),
).
Press(keys.Commits.MoveDownCommit).
Lines(
Contains("commit 03"),
Contains("commit 04").IsSelected(),
Contains("commit 02"),
Contains("commit 01"),
).
Press(keys.Commits.MoveDownCommit).
Lines(
Contains("commit 03"),
Contains("commit 02"),
Contains("commit 04").IsSelected(),
Contains("commit 01"),
).
Press(keys.Commits.MoveDownCommit).
Lines(
Contains("commit 03"),
Contains("commit 02"),
Contains("commit 01"),
Contains("commit 04").IsSelected(),
).
// assert nothing happens upon trying to move beyond the last commit
Press(keys.Commits.MoveDownCommit).
Lines(
Contains("commit 03"),
Contains("commit 02"),
Contains("commit 01"),
Contains("commit 04").IsSelected(),
).
Press(keys.Commits.MoveUpCommit).
Lines(
Contains("commit 03"),
Contains("commit 02"),
Contains("commit 04").IsSelected(),
Contains("commit 01"),
).
Press(keys.Commits.MoveUpCommit).
Lines(
Contains("commit 03"),
Contains("commit 04").IsSelected(),
Contains("commit 02"),
Contains("commit 01"),
).
Press(keys.Commits.MoveUpCommit).
Lines(
Contains("commit 04").IsSelected(),
Contains("commit 03"),
Contains("commit 02"),
Contains("commit 01"),
).
// assert nothing happens upon trying to move beyond the first commit
Press(keys.Commits.MoveUpCommit).
Lines(
Contains("commit 04").IsSelected(),
Contains("commit 03"),
Contains("commit 02"),
Contains("commit 01"),
)
},
})

View File

@ -0,0 +1,96 @@
package interactive_rebase
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var MoveInRebase = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Via a single interactive rebase move a commit all the way up then back down then slightly back up again and apply the change",
ExtraCmdArgs: "",
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.CreateNCommits(4)
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Commits().
Focus().
Lines(
Contains("commit 04").IsSelected(),
Contains("commit 03"),
Contains("commit 02"),
Contains("commit 01"),
).
NavigateToListItem(Contains("commit 01")).
Press(keys.Universal.Edit).
Lines(
Contains("commit 04"),
Contains("commit 03"),
Contains("commit 02"),
Contains("YOU ARE HERE").Contains("commit 01").IsSelected(),
).
SelectPreviousItem().
Press(keys.Commits.MoveUpCommit).
Lines(
Contains("commit 04"),
Contains("commit 02").IsSelected(),
Contains("commit 03"),
Contains("YOU ARE HERE").Contains("commit 01"),
).
Press(keys.Commits.MoveUpCommit).
Lines(
Contains("commit 02").IsSelected(),
Contains("commit 04"),
Contains("commit 03"),
Contains("YOU ARE HERE").Contains("commit 01"),
).
Press(keys.Commits.MoveUpCommit).
// assert we can't move past the top
Lines(
Contains("commit 02").IsSelected(),
Contains("commit 04"),
Contains("commit 03"),
Contains("YOU ARE HERE").Contains("commit 01"),
).
Press(keys.Commits.MoveDownCommit).
Lines(
Contains("commit 04"),
Contains("commit 02").IsSelected(),
Contains("commit 03"),
Contains("YOU ARE HERE").Contains("commit 01"),
).
Press(keys.Commits.MoveDownCommit).
Lines(
Contains("commit 04"),
Contains("commit 03"),
Contains("commit 02").IsSelected(),
Contains("YOU ARE HERE").Contains("commit 01"),
).
// assert we can't move past the bottom
Press(keys.Commits.MoveDownCommit).
Lines(
Contains("commit 04"),
Contains("commit 03"),
Contains("commit 02").IsSelected(),
Contains("YOU ARE HERE").Contains("commit 01"),
).
// move it back up one so that we land in a different order than we started with
Press(keys.Commits.MoveUpCommit).
Lines(
Contains("commit 04"),
Contains("commit 02").IsSelected(),
Contains("commit 03"),
Contains("YOU ARE HERE").Contains("commit 01"),
).
Tap(func() {
t.Actions().ContinueRebase()
}).
Lines(
Contains("commit 04"),
Contains("commit 02").IsSelected(),
Contains("commit 03"),
DoesNotContain("YOU ARE HERE").Contains("commit 01"),
)
},
})

View File

@ -1,71 +0,0 @@
package interactive_rebase
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var One = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Begins an interactive rebase, then fixups, drops, and squashes some commits",
ExtraCmdArgs: "",
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.
CreateNCommits(5) // these will appears at commit 05, 04, 04, down to 01
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Commits().
Focus().
Lines(
Contains("commit 05"),
Contains("commit 04"),
Contains("commit 03"),
Contains("commit 02"),
Contains("commit 01"),
).
NavigateToListItem(Contains("commit 02")).
Press(keys.Universal.Edit).
Lines(
MatchesRegexp("pick.*commit 05"),
MatchesRegexp("pick.*commit 04"),
MatchesRegexp("pick.*commit 03"),
MatchesRegexp("YOU ARE HERE.*commit 02").IsSelected(),
Contains("commit 01"),
).
SelectPreviousItem().
Press(keys.Commits.MarkCommitAsFixup).
Lines(
MatchesRegexp("pick.*commit 05"),
MatchesRegexp("pick.*commit 04"),
MatchesRegexp("fixup.*commit 03").IsSelected(),
MatchesRegexp("YOU ARE HERE.*commit 02"),
Contains("commit 01"),
).
SelectPreviousItem().
Press(keys.Universal.Remove).
Lines(
MatchesRegexp("pick.*commit 05"),
MatchesRegexp("drop.*commit 04").IsSelected(),
MatchesRegexp("fixup.*commit 03"),
MatchesRegexp("YOU ARE HERE.*commit 02"),
Contains("commit 01"),
).
SelectPreviousItem().
Press(keys.Commits.SquashDown).
Lines(
MatchesRegexp("squash.*commit 05").IsSelected(),
MatchesRegexp("drop.*commit 04"),
MatchesRegexp("fixup.*commit 03"),
MatchesRegexp("YOU ARE HERE.*commit 02"),
Contains("commit 01"),
).
Tap(func() {
t.Actions().ContinueRebase()
}).
Lines(
Contains("commit 02"),
Contains("commit 01"),
)
},
})

View File

@ -0,0 +1,122 @@
package interactive_rebase
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var Rebase = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Begins an interactive rebase, then fixups, drops, and squashes some commits",
ExtraCmdArgs: "",
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.EmptyCommit("initial commit")
shell.EmptyCommit("first commit to edit")
shell.EmptyCommit("commit to squash")
shell.EmptyCommit("second commit to edit")
shell.EmptyCommit("commit to drop")
shell.CreateFileAndAdd("fixup-commit-file", "fixup-commit-file")
shell.Commit("commit to fixup")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Commits().
Focus().
Lines(
Contains("commit to fixup"),
Contains("commit to drop"),
Contains("second commit to edit"),
Contains("commit to squash"),
Contains("first commit to edit"),
Contains("initial commit"),
).
NavigateToListItem(Contains("first commit to edit")).
Press(keys.Universal.Edit).
Lines(
MatchesRegexp("pick.*commit to fixup"),
MatchesRegexp("pick.*commit to drop"),
MatchesRegexp("pick.*second commit to edit"),
MatchesRegexp("pick.*commit to squash"),
MatchesRegexp("YOU ARE HERE.*first commit to edit").IsSelected(),
Contains("initial commit"),
).
SelectPreviousItem().
Press(keys.Commits.SquashDown).
Lines(
MatchesRegexp("pick.*commit to fixup"),
MatchesRegexp("pick.*commit to drop"),
MatchesRegexp("pick.*second commit to edit"),
MatchesRegexp("squash.*commit to squash").IsSelected(),
MatchesRegexp("YOU ARE HERE.*first commit to edit"),
Contains("initial commit"),
).
SelectPreviousItem().
Press(keys.Universal.Edit).
Lines(
MatchesRegexp("pick.*commit to fixup"),
MatchesRegexp("pick.*commit to drop"),
MatchesRegexp("edit.*second commit to edit").IsSelected(),
MatchesRegexp("squash.*commit to squash"),
MatchesRegexp("YOU ARE HERE.*first commit to edit"),
Contains("initial commit"),
).
SelectPreviousItem().
Press(keys.Universal.Remove).
Lines(
MatchesRegexp("pick.*commit to fixup"),
MatchesRegexp("drop.*commit to drop").IsSelected(),
MatchesRegexp("edit.*second commit to edit"),
MatchesRegexp("squash.*commit to squash"),
MatchesRegexp("YOU ARE HERE.*first commit to edit"),
Contains("initial commit"),
).
SelectPreviousItem().
Press(keys.Commits.MarkCommitAsFixup).
Lines(
MatchesRegexp("fixup.*commit to fixup").IsSelected(),
MatchesRegexp("drop.*commit to drop"),
MatchesRegexp("edit.*second commit to edit"),
MatchesRegexp("squash.*commit to squash"),
MatchesRegexp("YOU ARE HERE.*first commit to edit"),
Contains("initial commit"),
).
Tap(func() {
t.Actions().ContinueRebase()
}).
Lines(
MatchesRegexp("fixup.*commit to fixup").IsSelected(),
MatchesRegexp("drop.*commit to drop"),
MatchesRegexp("YOU ARE HERE.*second commit to edit"),
MatchesRegexp("first commit to edit"),
Contains("initial commit"),
).
Tap(func() {
t.Actions().ContinueRebase()
}).
Lines(
Contains("second commit to edit").IsSelected(),
Contains("first commit to edit"),
Contains("initial commit"),
).
Tap(func() {
// commit 4 was squashed into 6 so we assert that their messages have been concatenated
t.Views().Main().Content(
Contains("second commit to edit").
// file from fixup commit is present
Contains("fixup-commit-file").
// but message is not (because it's a fixup, not a squash)
DoesNotContain("commit to fixup"),
)
}).
SelectNextItem().
Tap(func() {
// commit 4 was squashed into 6 so we assert that their messages have been concatenated
t.Views().Main().Content(
Contains("first commit to edit").
// message from squashed commit has been concatenated with message other commit
Contains("commit to squash"),
)
})
},
})

View File

@ -5,6 +5,9 @@ import (
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
// Rewording the first commit is tricky because you can't rebase from its parent commit,
// hence having a specific test for this
var RewordFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Rewords the first commit, just to show that it's possible",
ExtraCmdArgs: "",

View File

@ -0,0 +1,38 @@
package interactive_rebase
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var RewordLastCommit = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Rewords the last (HEAD) commit",
ExtraCmdArgs: "",
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.
CreateNCommits(2)
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Commits().
Focus().
Lines(
Contains("commit 02").IsSelected(),
Contains("commit 01"),
).
Press(keys.Commits.RenameCommit).
Tap(func() {
t.ExpectPopup().Prompt().
Title(Equals("reword commit")).
InitialText(Equals("commit 02")).
Clear().
Type("renamed 02").
Confirm()
}).
Lines(
Contains("renamed 02"),
Contains("commit 01"),
)
},
})

View File

@ -0,0 +1,126 @@
package interactive_rebase
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var SwapInRebaseWithConflict = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Via an edit-triggered rebase, swap two commits, causing a conflict. Then resolve the conflict and continue",
ExtraCmdArgs: "",
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.CreateFileAndAdd("myfile", "one")
shell.Commit("commit one")
shell.UpdateFileAndAdd("myfile", "two")
shell.Commit("commit two")
shell.UpdateFileAndAdd("myfile", "three")
shell.Commit("commit three")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Commits().
Focus().
Lines(
Contains("commit three").IsSelected(),
Contains("commit two"),
Contains("commit one"),
).
NavigateToListItem(Contains("commit one")).
Press(keys.Universal.Edit).
Lines(
Contains("commit three"),
Contains("commit two"),
Contains("YOU ARE HERE").Contains("commit one").IsSelected(),
).
SelectPreviousItem().
Press(keys.Commits.MoveUpCommit).
Lines(
Contains("commit two").IsSelected(),
Contains("commit three"),
Contains("YOU ARE HERE").Contains("commit one"),
).
Tap(func() {
t.Actions().ContinueRebase()
})
handleConflictsFromSwap(t)
},
})
func handleConflictsFromSwap(t *TestDriver) {
continueMerge := func() {
t.ExpectPopup().Confirmation().
Title(Equals("continue")).
Content(Contains("all merge conflicts resolved. Continue?")).
Confirm()
}
acceptConflicts := func() {
t.ExpectPopup().Confirmation().
Title(Equals("Auto-merge failed")).
Content(Contains("Conflicts!")).
Confirm()
}
acceptConflicts()
t.Views().Files().
IsFocused().
Lines(
Contains("UU myfile"),
).
PressEnter()
t.Views().MergeConflicts().
IsFocused().
TopLines(
Contains("<<<<<<< HEAD"),
Contains("one"),
Contains("======="),
Contains("three"),
Contains(">>>>>>>"),
).
SelectNextItem().
PressPrimaryAction() // pick "three"
continueMerge()
acceptConflicts()
t.Views().Files().
IsFocused().
Lines(
Contains("UU myfile"),
).
PressEnter()
t.Views().MergeConflicts().
IsFocused().
TopLines(
Contains("<<<<<<< HEAD"),
Contains("three"),
Contains("======="),
Contains("two"),
Contains(">>>>>>>"),
).
SelectNextItem().
PressPrimaryAction() // pick "two"
continueMerge()
t.Views().Commits().
Focus().
Lines(
Contains("commit two").IsSelected(),
Contains("commit three"),
Contains("commit one"),
).
Tap(func() {
t.Views().Main().Content(Contains("-three").Contains("+two"))
}).
SelectNextItem().
Tap(func() {
t.Views().Main().Content(Contains("-one").Contains("+three"))
})
}

View File

@ -0,0 +1,33 @@
package interactive_rebase
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var SwapWithConflict = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Directly swap two commits, causing a conflict. Then resolve the conflict and continue",
ExtraCmdArgs: "",
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.CreateFileAndAdd("myfile", "one")
shell.Commit("commit one")
shell.UpdateFileAndAdd("myfile", "two")
shell.Commit("commit two")
shell.UpdateFileAndAdd("myfile", "three")
shell.Commit("commit three")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Commits().
Focus().
Lines(
Contains("commit three").IsSelected(),
Contains("commit two"),
Contains("commit one"),
).
Press(keys.Commits.MoveDownCommit)
handleConflictsFromSwap(t)
},
})

View File

@ -74,11 +74,16 @@ var tests = []*components.IntegrationTest{
interactive_rebase.EditFirstCommit,
interactive_rebase.FixupFirstCommit,
interactive_rebase.FixupSecondCommit,
interactive_rebase.One,
interactive_rebase.Move,
interactive_rebase.MoveInRebase,
interactive_rebase.Rebase,
interactive_rebase.RewordFirstCommit,
interactive_rebase.RewordLastCommit,
interactive_rebase.SquashDownFirstCommit,
interactive_rebase.SquashDownSecondCommit,
interactive_rebase.SquashFixupsAboveFirstCommit,
interactive_rebase.SwapInRebaseWithConflict,
interactive_rebase.SwapWithConflict,
misc.ConfirmOnQuit,
misc.InitialOpen,
patch_building.CopyPatchToClipboard,

View File

@ -1,30 +0,0 @@
# This is a combination of 3 commits.
# This is the 1st commit message:
file1
# This is the commit message #2:
file2
# The commit message #3 will be skipped:
# file4
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Tue Apr 6 11:39:15 2021 +1000
#
# interactive rebase in progress; onto ecfc580
# Last commands done (3 commands done):
# squash faaf373 file2
# fixup 578ebf1 file4
# No commands remaining.
# You are currently rebasing branch 'master' on 'ecfc580'.
#
# Changes to be committed:
# new file: file1
# new file: file2
# new file: file4
#

View File

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

View File

@ -1 +0,0 @@
47614f63053804bc596291b8f7cff3b460b1b3ee

View File

@ -1,10 +0,0 @@
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[user]
email = CI@example.com
name = CI

View File

@ -1 +0,0 @@
Unnamed repository; edit this file 'description' to name the repository.

View File

@ -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

View File

@ -1,9 +0,0 @@
0000000000000000000000000000000000000000 ecfc5809e3397bbda6bd4c9f47267a8c5f22346c CI <CI@example.com> 1617673155 +1000 commit (initial): file0
ecfc5809e3397bbda6bd4c9f47267a8c5f22346c 47614f63053804bc596291b8f7cff3b460b1b3ee CI <CI@example.com> 1617673155 +1000 commit: file1
47614f63053804bc596291b8f7cff3b460b1b3ee faaf373a925c1e335894ebf4343a00a917f04edc CI <CI@example.com> 1617673155 +1000 commit: file2
faaf373a925c1e335894ebf4343a00a917f04edc 578ebf1736e797b78fb670c718ebf177936eb2ef CI <CI@example.com> 1617673155 +1000 commit: file4
578ebf1736e797b78fb670c718ebf177936eb2ef ecfc5809e3397bbda6bd4c9f47267a8c5f22346c CI <CI@example.com> 1617673156 +1000 rebase -i (start): checkout ecfc5809e3397bbda6bd4c9f47267a8c5f22346c
ecfc5809e3397bbda6bd4c9f47267a8c5f22346c 47614f63053804bc596291b8f7cff3b460b1b3ee CI <CI@example.com> 1617673156 +1000 rebase -i: fast-forward
47614f63053804bc596291b8f7cff3b460b1b3ee e8ece6af94d443b67962124243509d8f61a29758 CI <CI@example.com> 1617673159 +1000 rebase -i (squash): # This is a combination of 2 commits.
e8ece6af94d443b67962124243509d8f61a29758 1824d7294d6d3524d83510db27086177a6db97bf CI <CI@example.com> 1617673159 +1000 rebase -i (fixup): file1
1824d7294d6d3524d83510db27086177a6db97bf 1824d7294d6d3524d83510db27086177a6db97bf CI <CI@example.com> 1617673159 +1000 rebase -i (finish): returning to refs/heads/master

View File

@ -1,5 +0,0 @@
0000000000000000000000000000000000000000 ecfc5809e3397bbda6bd4c9f47267a8c5f22346c CI <CI@example.com> 1617673155 +1000 commit (initial): file0
ecfc5809e3397bbda6bd4c9f47267a8c5f22346c 47614f63053804bc596291b8f7cff3b460b1b3ee CI <CI@example.com> 1617673155 +1000 commit: file1
47614f63053804bc596291b8f7cff3b460b1b3ee faaf373a925c1e335894ebf4343a00a917f04edc CI <CI@example.com> 1617673155 +1000 commit: file2
faaf373a925c1e335894ebf4343a00a917f04edc 578ebf1736e797b78fb670c718ebf177936eb2ef CI <CI@example.com> 1617673155 +1000 commit: file4
578ebf1736e797b78fb670c718ebf177936eb2ef 1824d7294d6d3524d83510db27086177a6db97bf CI <CI@example.com> 1617673159 +1000 rebase -i (finish): refs/heads/master onto ecfc5809e3397bbda6bd4c9f47267a8c5f22346c

View File

@ -1,2 +0,0 @@
x+)JMU03c040031QHヒフI5`ーアコイ燹ヨカwチ�w.ス��モ[H
矢y�5�来ミ(桍ァ ^-ンW(x9

View File

@ -1,3 +0,0 @@
x…ÎËj1 Юý‚, Á�ñ+”È*ûþ€lË��xÆôóëÒ)”n
Z]]k)KÅÍS߈À“shyŠ.9™’ÄrÒ\XCÙ:ÎI¢ŒìŽ­(æ¨÷¤”·!$4!MÑçÉJcÑE�¥T“‰ }®\®ðr¹žéËýFÇXË+3ê­ZÃ³àœ³‘Ž§:ýÃýÎÙÞæ¥Á„q–ûRW¨äW0ÊÚñ—ê3�h}_A¡Öð�NŒååF‚ý‘ß?
r‡’}yy_

View File

@ -1 +0,0 @@
1824d7294d6d3524d83510db27086177a6db97bf

View File

@ -1 +0,0 @@
test0

View File

@ -1 +0,0 @@
test1

View File

@ -1 +0,0 @@
test2

View File

@ -1 +0,0 @@
test3

View File

@ -1 +0,0 @@
{"KeyEvents":[{"Timestamp":595,"Mod":0,"Key":259,"Ch":0},{"Timestamp":780,"Mod":0,"Key":259,"Ch":0},{"Timestamp":1044,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1187,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1483,"Mod":0,"Key":256,"Ch":101},{"Timestamp":2492,"Mod":0,"Key":257,"Ch":0},{"Timestamp":2763,"Mod":0,"Key":256,"Ch":115},{"Timestamp":3125,"Mod":0,"Key":257,"Ch":0},{"Timestamp":3419,"Mod":0,"Key":256,"Ch":102},{"Timestamp":4132,"Mod":0,"Key":256,"Ch":109},{"Timestamp":4555,"Mod":0,"Key":13,"Ch":13},{"Timestamp":5260,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]}

View File

@ -1,26 +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 test3 > file4
git add .
git commit -am file4

View File

@ -1 +0,0 @@
{ "description": "basic rebase of commits", "speed": 10 }

View File

@ -1,16 +0,0 @@
file4-changed-again
# 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 4aedafb
# Last commands done (2 commands done):
# edit 26d430f file4-added
# pick c390128 file4-changed-again
# Next command to do (1 remaining command):
# pick bce4745 file4-changed
# You are currently rebasing branch 'master' on '4aedafb'.
#
# Changes to be committed:
# modified: file4
#

View File

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

View File

@ -1,4 +0,0 @@
file4-changed
# Conflicts:
# file4

View File

@ -1 +0,0 @@
26d430fb59900099e9992a3c79f30e42309cdce3

View File

@ -1 +0,0 @@
bce4745137c540943900ca78e4b31dd1315bf57c

View File

@ -1,10 +0,0 @@
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[user]
email = CI@example.com
name = CI

View File

@ -1 +0,0 @@
Unnamed repository; edit this file 'description' to name the repository.

View File

@ -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

View File

@ -1,10 +0,0 @@
0000000000000000000000000000000000000000 f94292928d0bc034fe88c753306b1959300e1264 CI <CI@example.com> 1617673301 +1000 commit (initial): file0
f94292928d0bc034fe88c753306b1959300e1264 61baf480bb5ddfad6d66c785b321d4aadd5367b4 CI <CI@example.com> 1617673301 +1000 commit: file1
61baf480bb5ddfad6d66c785b321d4aadd5367b4 4aedafb1a5d371825cbfea5ffcf2692cc786a1bf CI <CI@example.com> 1617673301 +1000 commit: file2
4aedafb1a5d371825cbfea5ffcf2692cc786a1bf 26d430fb59900099e9992a3c79f30e42309cdce3 CI <CI@example.com> 1617673301 +1000 commit: file4-added
26d430fb59900099e9992a3c79f30e42309cdce3 bce4745137c540943900ca78e4b31dd1315bf57c CI <CI@example.com> 1617673301 +1000 commit: file4-changed
bce4745137c540943900ca78e4b31dd1315bf57c c3901284a9e7fc063d6fa7f0c5797d031445ba45 CI <CI@example.com> 1617673301 +1000 commit: file4-changed-again
c3901284a9e7fc063d6fa7f0c5797d031445ba45 4aedafb1a5d371825cbfea5ffcf2692cc786a1bf CI <CI@example.com> 1617673303 +1000 rebase -i (start): checkout 4aedafb1a5d371825cbfea5ffcf2692cc786a1bf
4aedafb1a5d371825cbfea5ffcf2692cc786a1bf 26d430fb59900099e9992a3c79f30e42309cdce3 CI <CI@example.com> 1617673303 +1000 rebase -i: fast-forward
26d430fb59900099e9992a3c79f30e42309cdce3 c36e808d2fa61e16952b7d0ffb8f18d08156cc94 CI <CI@example.com> 1617673309 +1000 rebase -i (continue): file4-changed-again
c36e808d2fa61e16952b7d0ffb8f18d08156cc94 c36e808d2fa61e16952b7d0ffb8f18d08156cc94 CI <CI@example.com> 1617673311 +1000 rebase -i (finish): returning to refs/heads/master

View File

@ -1,7 +0,0 @@
0000000000000000000000000000000000000000 f94292928d0bc034fe88c753306b1959300e1264 CI <CI@example.com> 1617673301 +1000 commit (initial): file0
f94292928d0bc034fe88c753306b1959300e1264 61baf480bb5ddfad6d66c785b321d4aadd5367b4 CI <CI@example.com> 1617673301 +1000 commit: file1
61baf480bb5ddfad6d66c785b321d4aadd5367b4 4aedafb1a5d371825cbfea5ffcf2692cc786a1bf CI <CI@example.com> 1617673301 +1000 commit: file2
4aedafb1a5d371825cbfea5ffcf2692cc786a1bf 26d430fb59900099e9992a3c79f30e42309cdce3 CI <CI@example.com> 1617673301 +1000 commit: file4-added
26d430fb59900099e9992a3c79f30e42309cdce3 bce4745137c540943900ca78e4b31dd1315bf57c CI <CI@example.com> 1617673301 +1000 commit: file4-changed
bce4745137c540943900ca78e4b31dd1315bf57c c3901284a9e7fc063d6fa7f0c5797d031445ba45 CI <CI@example.com> 1617673301 +1000 commit: file4-changed-again
c3901284a9e7fc063d6fa7f0c5797d031445ba45 c36e808d2fa61e16952b7d0ffb8f18d08156cc94 CI <CI@example.com> 1617673311 +1000 rebase -i (finish): refs/heads/master onto 4aedafb1a5d371825cbfea5ffcf2692cc786a1bf

View File

@ -1,3 +0,0 @@
x�ÎM
Â0@a×9Eö¢d’Ɉ]õ“d Æ–ÁãÛ#¸}|‹W×Þ—¡!§ÓØ™5"{�УK"ä80’@Dï-[ȹpŽj£�ßC#q#)@¾¹ÉúZ„É‹T±!ÛZc
E}ÆsÝõ4ëÛ4?øK}{ñµ®ý®!@ Ñ9ú ÆuÔcjðŸ\Éòb¼PkÜÔ <9

View File

@ -1,2 +0,0 @@
x�ŽA
Â0E]ç³d&I“ˆ]õéd‚…Æ–Áã›#ÈÛ}Þ‡'{­kb{i§*dŒA„E�“¤d³ e‘˜x(Ù©u<ûàÉéÔwƒÂÞrg̸:_t%®‹ ñÀQÉoÒ§½ö¦îÓüÔoªÇ¦7Ùë(P ±_®„ˆ¦¯=ªéŸº)ë¦d~*<8Ž

View File

@ -1,2 +0,0 @@
x+)JMU03c040031QHヒフI5`ーアコイ燹ヨカwチ�w.ス��モ[H
矢y�5�来ミ(桍ァ ^-ンW(x9

View File

@ -1,2 +0,0 @@
x�ÍA
Â0Fa×9Åì™IÆÄ€ˆÐU�‘4°Ð)<¾=‚ÛÇoé­­ƒDõ4v€>äcÉr >ø–«V¶¹T¡QÕšô¯¾Ó4Ó}šŸø¦öÞpYz{�x >8ÇBgafsÔc2ð'7uÝÀæÙˆ+à

View File

@ -1 +0,0 @@
c36e808d2fa61e16952b7d0ffb8f18d08156cc94

View File

@ -1 +0,0 @@
test0

View File

@ -1 +0,0 @@
test1

View File

@ -1 +0,0 @@
test2

View File

@ -1 +0,0 @@
test5

View File

@ -1 +0,0 @@
{"KeyEvents":[{"Timestamp":507,"Mod":0,"Key":259,"Ch":0},{"Timestamp":707,"Mod":0,"Key":259,"Ch":0},{"Timestamp":1051,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1204,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1460,"Mod":0,"Key":256,"Ch":101},{"Timestamp":1948,"Mod":0,"Key":257,"Ch":0},{"Timestamp":2091,"Mod":0,"Key":257,"Ch":0},{"Timestamp":2828,"Mod":2,"Key":10,"Ch":10},{"Timestamp":4219,"Mod":0,"Key":256,"Ch":109},{"Timestamp":4476,"Mod":0,"Key":13,"Ch":13},{"Timestamp":5524,"Mod":0,"Key":13,"Ch":13},{"Timestamp":6116,"Mod":0,"Key":13,"Ch":13},{"Timestamp":6405,"Mod":0,"Key":258,"Ch":0},{"Timestamp":6635,"Mod":0,"Key":256,"Ch":32},{"Timestamp":7292,"Mod":0,"Key":13,"Ch":13},{"Timestamp":8147,"Mod":0,"Key":13,"Ch":13},{"Timestamp":8548,"Mod":0,"Key":13,"Ch":13},{"Timestamp":8891,"Mod":0,"Key":257,"Ch":0},{"Timestamp":9155,"Mod":0,"Key":256,"Ch":32},{"Timestamp":9707,"Mod":0,"Key":13,"Ch":13},{"Timestamp":10636,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]}

View File

@ -1,34 +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 test3 > file4
git add .
git commit -am file4-added
echo test4 > file4
git add .
git commit -am file4-changed
echo test5 > file4
git add .
git commit -am file4-changed-again

View File

@ -1 +0,0 @@
{ "description": "rebasing by reordering two commits, causing a merge conflict", "speed": 10 }

View File

@ -1,27 +0,0 @@
# This is a combination of 2 commits.
# This is the 1st commit message:
file1
# This is the commit message #2:
file2
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Tue Apr 6 11:43:21 2021 +1000
#
# interactive rebase in progress; onto fdecf9e
# Last commands done (2 commands done):
# edit f06dfb4 file1
# squash 51a0e4a file2
# Next commands to do (3 remaining commands):
# edit d8ae31f file4-added
# fixup 4bf6ae4 file4-changed
# You are currently rebasing branch 'master' on 'fdecf9e'.
#
# Changes to be committed:
# new file: file1
# new file: file2
#

View File

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

View File

@ -1 +0,0 @@
9e68fbe4291e7416d50587d9b6968aa5ceeccff9

View File

@ -1,10 +0,0 @@
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[user]
email = CI@example.com
name = CI

View File

@ -1 +0,0 @@
Unnamed repository; edit this file 'description' to name the repository.

View File

@ -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

View File

@ -1,12 +0,0 @@
0000000000000000000000000000000000000000 fdecf9e3e742db4c8690d56b328b2533e67d2866 CI <CI@example.com> 1617673401 +1000 commit (initial): file0
fdecf9e3e742db4c8690d56b328b2533e67d2866 f06dfb4e9e5a9dfab869590058f2c1ce1c72b2ac CI <CI@example.com> 1617673401 +1000 commit: file1
f06dfb4e9e5a9dfab869590058f2c1ce1c72b2ac 51a0e4a6635c22a062a48b7134dd556541a1e06c CI <CI@example.com> 1617673401 +1000 commit: file2
51a0e4a6635c22a062a48b7134dd556541a1e06c d8ae31faf375fd293cedb0c88c41a9c7a77a2530 CI <CI@example.com> 1617673401 +1000 commit: file4-added
d8ae31faf375fd293cedb0c88c41a9c7a77a2530 4bf6ae41c5ef2186c87f5f39dbb8cadd76c597cc CI <CI@example.com> 1617673401 +1000 commit: file4-changed
4bf6ae41c5ef2186c87f5f39dbb8cadd76c597cc 9e68fbe4291e7416d50587d9b6968aa5ceeccff9 CI <CI@example.com> 1617673401 +1000 commit: file4-changed-again
9e68fbe4291e7416d50587d9b6968aa5ceeccff9 fdecf9e3e742db4c8690d56b328b2533e67d2866 CI <CI@example.com> 1617673403 +1000 rebase -i (start): checkout fdecf9e3e742db4c8690d56b328b2533e67d2866
fdecf9e3e742db4c8690d56b328b2533e67d2866 f06dfb4e9e5a9dfab869590058f2c1ce1c72b2ac CI <CI@example.com> 1617673403 +1000 rebase -i: fast-forward
f06dfb4e9e5a9dfab869590058f2c1ce1c72b2ac 7b42ba8a9f370bbbf0db85c5aca61f4e8a7b3d26 CI <CI@example.com> 1617673407 +1000 rebase -i (squash): file1
7b42ba8a9f370bbbf0db85c5aca61f4e8a7b3d26 8f2acebb8a7a83cfaf3cffc6a9103f633f5cf292 CI <CI@example.com> 1617673407 +1000 rebase -i (edit): file4-added
8f2acebb8a7a83cfaf3cffc6a9103f633f5cf292 3c21f03d819ae34b74084712c3ef1b9b99b2f40e CI <CI@example.com> 1617673409 +1000 rebase -i (fixup): file4-added
3c21f03d819ae34b74084712c3ef1b9b99b2f40e 3c21f03d819ae34b74084712c3ef1b9b99b2f40e CI <CI@example.com> 1617673409 +1000 rebase -i (finish): returning to refs/heads/master

View File

@ -1,7 +0,0 @@
0000000000000000000000000000000000000000 fdecf9e3e742db4c8690d56b328b2533e67d2866 CI <CI@example.com> 1617673401 +1000 commit (initial): file0
fdecf9e3e742db4c8690d56b328b2533e67d2866 f06dfb4e9e5a9dfab869590058f2c1ce1c72b2ac CI <CI@example.com> 1617673401 +1000 commit: file1
f06dfb4e9e5a9dfab869590058f2c1ce1c72b2ac 51a0e4a6635c22a062a48b7134dd556541a1e06c CI <CI@example.com> 1617673401 +1000 commit: file2
51a0e4a6635c22a062a48b7134dd556541a1e06c d8ae31faf375fd293cedb0c88c41a9c7a77a2530 CI <CI@example.com> 1617673401 +1000 commit: file4-added
d8ae31faf375fd293cedb0c88c41a9c7a77a2530 4bf6ae41c5ef2186c87f5f39dbb8cadd76c597cc CI <CI@example.com> 1617673401 +1000 commit: file4-changed
4bf6ae41c5ef2186c87f5f39dbb8cadd76c597cc 9e68fbe4291e7416d50587d9b6968aa5ceeccff9 CI <CI@example.com> 1617673401 +1000 commit: file4-changed-again
9e68fbe4291e7416d50587d9b6968aa5ceeccff9 3c21f03d819ae34b74084712c3ef1b9b99b2f40e CI <CI@example.com> 1617673409 +1000 rebase -i (finish): refs/heads/master onto fdecf9e3e742db4c8690d56b328b2533e67d2866

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