mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-02-03 13:21:56 +02:00
Merge pull request #2450 from jesseduffield/migrate-more-tests
This commit is contained in:
commit
b54b8ae746
12
.vscode/tasks.json
vendored
12
.vscode/tasks.json
vendored
@ -69,6 +69,18 @@
|
||||
"presentation": {
|
||||
"focus": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Sync tests list",
|
||||
"type": "shell",
|
||||
"command": "go generate ./...",
|
||||
"problemMatcher": [],
|
||||
"group": {
|
||||
"kind": "test",
|
||||
},
|
||||
"presentation": {
|
||||
"focus": true
|
||||
}
|
||||
},
|
||||
],
|
||||
}
|
||||
|
2
go.mod
2
go.mod
@ -18,7 +18,7 @@ require (
|
||||
github.com/integrii/flaggy v1.4.0
|
||||
github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68
|
||||
github.com/jesseduffield/go-git/v5 v5.1.2-0.20221018185014-fdd53fef665d
|
||||
github.com/jesseduffield/gocui v0.3.1-0.20230217232659-7a98151b05c3
|
||||
github.com/jesseduffield/gocui v0.3.1-0.20230219034834-06a1f1e95da5
|
||||
github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10
|
||||
github.com/jesseduffield/lazycore v0.0.0-20221012050358-03d2e40243c5
|
||||
github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e
|
||||
|
4
go.sum
4
go.sum
@ -72,8 +72,8 @@ github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 h1:EQP2Tv8T
|
||||
github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68/go.mod h1:+LLj9/WUPAP8LqCchs7P+7X0R98HiFujVFANdNaxhGk=
|
||||
github.com/jesseduffield/go-git/v5 v5.1.2-0.20221018185014-fdd53fef665d h1:bO+OmbreIv91rCe8NmscRwhFSqkDJtzWCPV4Y+SQuXE=
|
||||
github.com/jesseduffield/go-git/v5 v5.1.2-0.20221018185014-fdd53fef665d/go.mod h1:nGNEErzf+NRznT+N2SWqmHnDnF9aLgANB1CUNEan09o=
|
||||
github.com/jesseduffield/gocui v0.3.1-0.20230217232659-7a98151b05c3 h1:dNhaHQ5aK/j0zSUM7lqCxusQXVw84GyEpJ2xOm9LdUc=
|
||||
github.com/jesseduffield/gocui v0.3.1-0.20230217232659-7a98151b05c3/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU=
|
||||
github.com/jesseduffield/gocui v0.3.1-0.20230219034834-06a1f1e95da5 h1:6mrOZa9I1bol14HhVK0tl4w9xvvGKLWPmShPRey1Lxg=
|
||||
github.com/jesseduffield/gocui v0.3.1-0.20230219034834-06a1f1e95da5/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU=
|
||||
github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 h1:jmpr7KpX2+2GRiE91zTgfq49QvgiqB0nbmlwZ8UnOx0=
|
||||
github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10/go.mod h1:aA97kHeNA+sj2Hbki0pvLslmE4CbDyhBeSSTUUnOuVo=
|
||||
github.com/jesseduffield/lazycore v0.0.0-20221012050358-03d2e40243c5 h1:CDuQmfOjAtb1Gms6a1p5L2P8RhbLUq5t8aL7PiQd2uY=
|
||||
|
@ -195,17 +195,17 @@ func (self *UndoController) parseReflogForActions(onUserAction func(counter int,
|
||||
counter++
|
||||
} else if ok, _ := utils.FindStringSubmatch(reflogCommit.Name, `^\[lazygit redo\]`); ok {
|
||||
counter--
|
||||
} else if ok, _ := utils.FindStringSubmatch(reflogCommit.Name, `^rebase -i \(abort\)|^rebase -i \(finish\)`); ok {
|
||||
} else if ok, _ := utils.FindStringSubmatch(reflogCommit.Name, `^rebase (-i )?\(abort\)|^rebase (-i )?\(finish\)`); ok {
|
||||
rebaseFinishCommitSha = reflogCommit.Sha
|
||||
} else if ok, match := utils.FindStringSubmatch(reflogCommit.Name, `^checkout: moving from ([\S]+) to ([\S]+)`); ok {
|
||||
action = &reflogAction{kind: CHECKOUT, from: match[1], to: match[2]}
|
||||
} else if ok, _ := utils.FindStringSubmatch(reflogCommit.Name, `^commit|^reset: moving to|^pull`); ok {
|
||||
action = &reflogAction{kind: COMMIT, from: prevCommitSha, to: reflogCommit.Sha}
|
||||
} else if ok, _ := utils.FindStringSubmatch(reflogCommit.Name, `^rebase -i \(start\)`); ok {
|
||||
} else if ok, _ := utils.FindStringSubmatch(reflogCommit.Name, `^rebase (-i )?\(start\)`); ok {
|
||||
// if we're here then we must be currently inside an interactive rebase
|
||||
action = &reflogAction{kind: CURRENT_REBASE, from: prevCommitSha}
|
||||
}
|
||||
} else if ok, _ := utils.FindStringSubmatch(reflogCommit.Name, `^rebase -i \(start\)`); ok {
|
||||
} else if ok, _ := utils.FindStringSubmatch(reflogCommit.Name, `^rebase (-i )?\(start\)`); ok {
|
||||
action = &reflogAction{kind: REBASE, from: prevCommitSha, to: rebaseFinishCommitSha}
|
||||
rebaseFinishCommitSha = ""
|
||||
}
|
||||
|
@ -50,10 +50,18 @@ func (self *GuiDriver) CurrentContext() types.Context {
|
||||
}
|
||||
|
||||
func (self *GuiDriver) Fail(message string) {
|
||||
currentView := self.gui.g.CurrentView()
|
||||
fullMessage := fmt.Sprintf(
|
||||
"%s\nFinal Lazygit state:\n%s\nUpon failure, focused view was '%s'.\nLog:\n%s", message,
|
||||
self.gui.g.Snapshot(),
|
||||
currentView.Name(),
|
||||
strings.Join(self.gui.CmdLog, "\n"),
|
||||
)
|
||||
|
||||
self.gui.g.Close()
|
||||
// need to give the gui time to close
|
||||
time.Sleep(time.Millisecond * 100)
|
||||
panic(fmt.Sprintf("%s\nLog:\n%s", message, strings.Join(self.gui.CmdLog, "\n")))
|
||||
panic(fullMessage)
|
||||
}
|
||||
|
||||
// logs to the normal place that you log to i.e. viewable with `lazygit --logs`
|
||||
|
@ -36,6 +36,18 @@ func (self *MenuDriver) Select(option *matcher) *MenuDriver {
|
||||
return self
|
||||
}
|
||||
|
||||
func (self *MenuDriver) Lines(matchers ...*matcher) *MenuDriver {
|
||||
self.getViewDriver().Lines(matchers...)
|
||||
|
||||
return self
|
||||
}
|
||||
|
||||
func (self *MenuDriver) TopLines(matchers ...*matcher) *MenuDriver {
|
||||
self.getViewDriver().TopLines(matchers...)
|
||||
|
||||
return self
|
||||
}
|
||||
|
||||
func (self *MenuDriver) checkNecessaryChecksCompleted() {
|
||||
if !self.hasCheckedTitle {
|
||||
self.t.Fail("You must check the title of a menu popup by calling Title() before calling Confirm()/Cancel().")
|
||||
|
@ -116,6 +116,10 @@ func (self *Shell) Merge(name string) *Shell {
|
||||
return self.RunCommand("git merge --commit --no-ff " + name)
|
||||
}
|
||||
|
||||
func (self *Shell) ContinueMerge() *Shell {
|
||||
return self.RunCommand("git -c core.editor=true merge --continue")
|
||||
}
|
||||
|
||||
func (self *Shell) GitAdd(path string) *Shell {
|
||||
return self.RunCommand(fmt.Sprintf("git add \"%s\"", path))
|
||||
}
|
||||
|
@ -72,6 +72,10 @@ func (self *Views) Branches() *ViewDriver {
|
||||
return self.byName("localBranches")
|
||||
}
|
||||
|
||||
func (self *Views) Remotes() *ViewDriver {
|
||||
return self.byName("remotes")
|
||||
}
|
||||
|
||||
func (self *Views) RemoteBranches() *ViewDriver {
|
||||
return self.byName("remoteBranches")
|
||||
}
|
||||
|
18
pkg/integration/tests/branch/open_with_cli_arg.go
Normal file
18
pkg/integration/tests/branch/open_with_cli_arg.go
Normal file
@ -0,0 +1,18 @@
|
||||
package branch
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/config"
|
||||
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||
)
|
||||
|
||||
var OpenWithCliArg = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Open straight to branches panel using a CLI arg",
|
||||
ExtraCmdArgs: "branch",
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
},
|
||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||
t.Views().Branches().IsFocused()
|
||||
},
|
||||
})
|
43
pkg/integration/tests/commit/revert_merge.go
Normal file
43
pkg/integration/tests/commit/revert_merge.go
Normal file
@ -0,0 +1,43 @@
|
||||
package commit
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/config"
|
||||
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/shared"
|
||||
)
|
||||
|
||||
var RevertMerge = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Reverts a merge commit and chooses to revert to the parent commit",
|
||||
ExtraCmdArgs: "",
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shared.CreateMergeCommit(shell)
|
||||
},
|
||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||
t.Views().Commits().Focus().
|
||||
TopLines(
|
||||
Contains("Merge branch 'second-change-branch' into first-change-branch").IsSelected(),
|
||||
).
|
||||
Press(keys.Commits.RevertCommit)
|
||||
|
||||
t.ExpectPopup().Menu().
|
||||
Title(Equals("Select parent commit for merge")).
|
||||
Lines(
|
||||
Contains("first change"),
|
||||
Contains("second-change-branch unrelated change"),
|
||||
Contains("cancel"),
|
||||
).
|
||||
Select(Contains("first change")).
|
||||
Confirm()
|
||||
|
||||
t.Views().Commits().IsFocused().
|
||||
TopLines(
|
||||
Contains("Revert \"Merge branch 'second-change-branch' into first-change-branch\""),
|
||||
Contains("Merge branch 'second-change-branch' into first-change-branch").IsSelected(),
|
||||
).
|
||||
SelectPreviousItem()
|
||||
|
||||
t.Views().Main().Content(Contains("-Second Change").Contains("+First Change"))
|
||||
},
|
||||
})
|
34
pkg/integration/tests/conflicts/undo_choose_hunk.go
Normal file
34
pkg/integration/tests/conflicts/undo_choose_hunk.go
Normal file
@ -0,0 +1,34 @@
|
||||
package conflicts
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/config"
|
||||
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/shared"
|
||||
)
|
||||
|
||||
var UndoChooseHunk = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Chooses a hunk when resolving a merge conflict and then undoes the choice",
|
||||
ExtraCmdArgs: "",
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shared.CreateMergeConflictFileMultiple(shell)
|
||||
},
|
||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||
t.Views().Files().
|
||||
IsFocused().
|
||||
Lines(
|
||||
Contains("UU file").IsSelected(),
|
||||
).
|
||||
PressEnter()
|
||||
|
||||
t.Views().MergeConflicts().
|
||||
IsFocused().
|
||||
Content(Contains("<<<<<<< HEAD\nFirst Change")).
|
||||
PressPrimaryAction().
|
||||
// choosing the first hunk
|
||||
Content(DoesNotContain("<<<<<<< HEAD\nFirst Change")).
|
||||
Press(keys.Universal.Undo).
|
||||
Content(Contains("<<<<<<< HEAD\nFirst Change"))
|
||||
},
|
||||
})
|
24
pkg/integration/tests/misc/initial_open.go
Normal file
24
pkg/integration/tests/misc/initial_open.go
Normal file
@ -0,0 +1,24 @@
|
||||
package misc
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/config"
|
||||
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||
)
|
||||
|
||||
var InitialOpen = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Confirms a popup appears on first opening Lazygit",
|
||||
ExtraCmdArgs: "",
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {
|
||||
config.UserConfig.DisableStartupPopups = false
|
||||
},
|
||||
SetupRepo: func(shell *Shell) {},
|
||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||
t.ExpectPopup().Confirmation().
|
||||
Title(Equals("")).
|
||||
Content(Contains("Thanks for using lazygit!")).
|
||||
Confirm()
|
||||
|
||||
t.Views().Files().IsFocused()
|
||||
},
|
||||
})
|
@ -47,3 +47,97 @@ var MergeConflictsSetup = func(shell *Shell) {
|
||||
EmptyCommit("second-change-branch unrelated change").
|
||||
Checkout("first-change-branch")
|
||||
}
|
||||
|
||||
var CreateMergeConflictFile = func(shell *Shell) {
|
||||
MergeConflictsSetup(shell)
|
||||
|
||||
shell.RunShellCommandExpectError("git merge --no-edit second-change-branch")
|
||||
}
|
||||
|
||||
var CreateMergeCommit = func(shell *Shell) {
|
||||
CreateMergeConflictFile(shell)
|
||||
shell.UpdateFileAndAdd("file", SecondChangeFileContent)
|
||||
shell.ContinueMerge()
|
||||
}
|
||||
|
||||
// These 'multiple' variants are just like the short ones but with longer file contents and with multiple conflicts within the file.
|
||||
|
||||
var OriginalFileContentMultiple = `
|
||||
This
|
||||
Is
|
||||
The
|
||||
Original
|
||||
File
|
||||
..
|
||||
It
|
||||
Is
|
||||
Longer
|
||||
Than
|
||||
The
|
||||
Other
|
||||
Options
|
||||
`
|
||||
|
||||
var FirstChangeFileContentMultiple = `
|
||||
This
|
||||
Is
|
||||
The
|
||||
First Change
|
||||
File
|
||||
..
|
||||
It
|
||||
Is
|
||||
Longer
|
||||
Than
|
||||
The
|
||||
Other
|
||||
Other First Change
|
||||
`
|
||||
|
||||
var SecondChangeFileContentMultiple = `
|
||||
This
|
||||
Is
|
||||
The
|
||||
Second Change
|
||||
File
|
||||
..
|
||||
It
|
||||
Is
|
||||
Longer
|
||||
Than
|
||||
The
|
||||
Other
|
||||
Other Second Change
|
||||
`
|
||||
|
||||
// prepares us for a rebase/merge that has conflicts
|
||||
var MergeConflictsSetupMultiple = func(shell *Shell) {
|
||||
shell.
|
||||
NewBranch("original-branch").
|
||||
EmptyCommit("one").
|
||||
EmptyCommit("two").
|
||||
EmptyCommit("three").
|
||||
CreateFileAndAdd("file", OriginalFileContentMultiple).
|
||||
Commit("original").
|
||||
NewBranch("first-change-branch").
|
||||
UpdateFileAndAdd("file", FirstChangeFileContentMultiple).
|
||||
Commit("first change").
|
||||
Checkout("original-branch").
|
||||
NewBranch("second-change-branch").
|
||||
UpdateFileAndAdd("file", SecondChangeFileContentMultiple).
|
||||
Commit("second change").
|
||||
EmptyCommit("second-change-branch unrelated change").
|
||||
Checkout("first-change-branch")
|
||||
}
|
||||
|
||||
var CreateMergeConflictFileMultiple = func(shell *Shell) {
|
||||
MergeConflictsSetupMultiple(shell)
|
||||
|
||||
shell.RunShellCommandExpectError("git merge --no-edit second-change-branch")
|
||||
}
|
||||
|
||||
var CreateMergeCommitMultiple = func(shell *Shell) {
|
||||
CreateMergeConflictFileMultiple(shell)
|
||||
shell.UpdateFileAndAdd("file", SecondChangeFileContentMultiple)
|
||||
shell.ContinueMerge()
|
||||
}
|
||||
|
56
pkg/integration/tests/sync/force_push.go
Normal file
56
pkg/integration/tests/sync/force_push.go
Normal file
@ -0,0 +1,56 @@
|
||||
package sync
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/config"
|
||||
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||
)
|
||||
|
||||
var ForcePush = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Push to a remote with new commits, requiring a force push",
|
||||
ExtraCmdArgs: "",
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shell.EmptyCommit("one")
|
||||
shell.EmptyCommit("two")
|
||||
|
||||
shell.CloneIntoRemote("origin")
|
||||
shell.SetBranchUpstream("master", "origin/master")
|
||||
|
||||
// remove the 'two' commit so that we have something to pull from the remote
|
||||
shell.HardReset("HEAD^")
|
||||
},
|
||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||
t.Views().Commits().
|
||||
Lines(
|
||||
Contains("one"),
|
||||
)
|
||||
|
||||
t.Views().Status().Content(Contains("↓1 repo → master"))
|
||||
|
||||
t.Views().Files().IsFocused().Press(keys.Universal.Push)
|
||||
|
||||
t.ExpectPopup().Confirmation().
|
||||
Title(Equals("Force push")).
|
||||
Content(Equals("Your branch has diverged from the remote branch. Press 'esc' to cancel, or 'enter' to force push.")).
|
||||
Confirm()
|
||||
|
||||
t.Views().Commits().
|
||||
Lines(
|
||||
Contains("one"),
|
||||
)
|
||||
|
||||
t.Views().Status().Content(Contains("✓ repo → master"))
|
||||
|
||||
t.Views().Remotes().Focus().
|
||||
Lines(Contains("origin")).
|
||||
PressEnter()
|
||||
|
||||
t.Views().RemoteBranches().IsFocused().
|
||||
Lines(Contains("master")).
|
||||
PressEnter()
|
||||
|
||||
t.Views().SubCommits().IsFocused().
|
||||
Lines(Contains("one"))
|
||||
},
|
||||
})
|
53
pkg/integration/tests/sync/force_push_multiple_matching.go
Normal file
53
pkg/integration/tests/sync/force_push_multiple_matching.go
Normal file
@ -0,0 +1,53 @@
|
||||
package sync
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/config"
|
||||
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||
)
|
||||
|
||||
var ForcePushMultipleMatching = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Force push to multiple branches because the user has push.default matching",
|
||||
ExtraCmdArgs: "",
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {
|
||||
},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shell.SetConfig("push.default", "matching")
|
||||
|
||||
createTwoBranchesReadyToForcePush(shell)
|
||||
},
|
||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||
t.Views().Commits().
|
||||
Lines(
|
||||
Contains("one"),
|
||||
)
|
||||
|
||||
t.Views().Status().Content(Contains("↓1 repo → master"))
|
||||
|
||||
t.Views().Branches().
|
||||
Lines(
|
||||
Contains("master ↓1"),
|
||||
Contains("other_branch ↓1"),
|
||||
)
|
||||
|
||||
t.Views().Files().IsFocused().Press(keys.Universal.Push)
|
||||
|
||||
t.ExpectPopup().Confirmation().
|
||||
Title(Equals("Force push")).
|
||||
Content(Equals("Your branch has diverged from the remote branch. Press 'esc' to cancel, or 'enter' to force push.")).
|
||||
Confirm()
|
||||
|
||||
t.Views().Commits().
|
||||
Lines(
|
||||
Contains("one"),
|
||||
)
|
||||
|
||||
t.Views().Status().Content(Contains("✓ repo → master"))
|
||||
|
||||
t.Views().Branches().
|
||||
Lines(
|
||||
Contains("master ✓"),
|
||||
Contains("other_branch ✓"),
|
||||
)
|
||||
},
|
||||
})
|
71
pkg/integration/tests/sync/force_push_multiple_upstream.go
Normal file
71
pkg/integration/tests/sync/force_push_multiple_upstream.go
Normal file
@ -0,0 +1,71 @@
|
||||
package sync
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/config"
|
||||
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||
)
|
||||
|
||||
func createTwoBranchesReadyToForcePush(shell *Shell) {
|
||||
shell.EmptyCommit("one")
|
||||
shell.EmptyCommit("two")
|
||||
|
||||
shell.NewBranch("other_branch")
|
||||
|
||||
shell.CloneIntoRemote("origin")
|
||||
|
||||
shell.SetBranchUpstream("master", "origin/master")
|
||||
shell.SetBranchUpstream("other_branch", "origin/other_branch")
|
||||
|
||||
// remove the 'two' commit so that we have something to pull from the remote
|
||||
shell.HardReset("HEAD^")
|
||||
|
||||
shell.Checkout("master")
|
||||
// doing the same for master
|
||||
shell.HardReset("HEAD^")
|
||||
}
|
||||
|
||||
var ForcePushMultipleUpstream = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Force push to only the upstream branch of the current branch because the user has push.default upstream",
|
||||
ExtraCmdArgs: "",
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shell.SetConfig("push.default", "upstream")
|
||||
|
||||
createTwoBranchesReadyToForcePush(shell)
|
||||
},
|
||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||
t.Views().Commits().
|
||||
Lines(
|
||||
Contains("one"),
|
||||
)
|
||||
|
||||
t.Views().Status().Content(Contains("↓1 repo → master"))
|
||||
|
||||
t.Views().Branches().
|
||||
Lines(
|
||||
Contains("master ↓1"),
|
||||
Contains("other_branch ↓1"),
|
||||
)
|
||||
|
||||
t.Views().Files().IsFocused().Press(keys.Universal.Push)
|
||||
|
||||
t.ExpectPopup().Confirmation().
|
||||
Title(Equals("Force push")).
|
||||
Content(Equals("Your branch has diverged from the remote branch. Press 'esc' to cancel, or 'enter' to force push.")).
|
||||
Confirm()
|
||||
|
||||
t.Views().Commits().
|
||||
Lines(
|
||||
Contains("one"),
|
||||
)
|
||||
|
||||
t.Views().Status().Content(Contains("✓ repo → master"))
|
||||
|
||||
t.Views().Branches().
|
||||
Lines(
|
||||
Contains("master ✓"),
|
||||
Contains("other_branch ↓1"),
|
||||
)
|
||||
},
|
||||
})
|
@ -9,9 +9,7 @@ var Pull = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Pull a commit from the remote",
|
||||
ExtraCmdArgs: "",
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {
|
||||
config.UserConfig.Git.AutoFetch = false
|
||||
},
|
||||
SetupConfig: func(config *config.AppConfig) {},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shell.EmptyCommit("one")
|
||||
shell.EmptyCommit("two")
|
||||
|
@ -9,9 +9,7 @@ var PullAndSetUpstream = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Pull a commit from the remote, setting the upstream branch in the process",
|
||||
ExtraCmdArgs: "",
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {
|
||||
config.UserConfig.Git.AutoFetch = false
|
||||
},
|
||||
SetupConfig: func(config *config.AppConfig) {},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shell.EmptyCommit("one")
|
||||
shell.EmptyCommit("two")
|
||||
|
@ -9,9 +9,7 @@ var RenameBranchAndPull = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Rename a branch to no longer match its upstream, then pull from the upstream",
|
||||
ExtraCmdArgs: "",
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {
|
||||
config.UserConfig.Git.AutoFetch = false
|
||||
},
|
||||
SetupConfig: func(config *config.AppConfig) {},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shell.EmptyCommit("one")
|
||||
shell.EmptyCommit("two")
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/cherry_pick"
|
||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/commit"
|
||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/config"
|
||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/conflicts"
|
||||
"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"
|
||||
@ -19,6 +20,7 @@ import (
|
||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/stash"
|
||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/submodule"
|
||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/sync"
|
||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/undo"
|
||||
)
|
||||
|
||||
var tests = []*components.IntegrationTest{
|
||||
@ -27,6 +29,7 @@ var tests = []*components.IntegrationTest{
|
||||
branch.CheckoutByName,
|
||||
branch.Delete,
|
||||
branch.DetachedHead,
|
||||
branch.OpenWithCliArg,
|
||||
branch.Rebase,
|
||||
branch.RebaseAndDrop,
|
||||
branch.RebaseDoesNotAutosquash,
|
||||
@ -39,11 +42,13 @@ var tests = []*components.IntegrationTest{
|
||||
commit.DiscardOldFileChange,
|
||||
commit.NewBranch,
|
||||
commit.Revert,
|
||||
commit.RevertMerge,
|
||||
commit.StageRangeOfLines,
|
||||
commit.Staged,
|
||||
commit.StagedWithoutHooks,
|
||||
commit.Unstaged,
|
||||
config.RemoteNamedStar,
|
||||
conflicts.UndoChooseHunk,
|
||||
custom_commands.Basic,
|
||||
custom_commands.FormPrompts,
|
||||
custom_commands.MenuFromCommand,
|
||||
@ -63,6 +68,7 @@ var tests = []*components.IntegrationTest{
|
||||
interactive_rebase.AmendMerge,
|
||||
interactive_rebase.One,
|
||||
misc.ConfirmOnQuit,
|
||||
misc.InitialOpen,
|
||||
patch_building.CopyPatchToClipboard,
|
||||
stash.Rename,
|
||||
stash.Stash,
|
||||
@ -72,7 +78,11 @@ var tests = []*components.IntegrationTest{
|
||||
submodule.Remove,
|
||||
submodule.Reset,
|
||||
sync.FetchPrune,
|
||||
sync.ForcePush,
|
||||
sync.ForcePushMultipleMatching,
|
||||
sync.ForcePushMultipleUpstream,
|
||||
sync.Pull,
|
||||
sync.PullAndSetUpstream,
|
||||
sync.RenameBranchAndPull,
|
||||
undo.UndoDrop,
|
||||
}
|
||||
|
90
pkg/integration/tests/undo/undo_drop.go
Normal file
90
pkg/integration/tests/undo/undo_drop.go
Normal file
@ -0,0 +1,90 @@
|
||||
package undo
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/config"
|
||||
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||
)
|
||||
|
||||
var UndoDrop = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Drop some commits and then undo/redo the actions",
|
||||
ExtraCmdArgs: "",
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shell.EmptyCommit("one")
|
||||
shell.EmptyCommit("two")
|
||||
shell.EmptyCommit("three")
|
||||
shell.EmptyCommit("four")
|
||||
},
|
||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||
confirmCommitDrop := func() {
|
||||
t.ExpectPopup().Confirmation().
|
||||
Title(Equals("Delete Commit")).
|
||||
Content(Equals("Are you sure you want to delete this commit?")).
|
||||
Confirm()
|
||||
}
|
||||
|
||||
confirmUndo := func() {
|
||||
t.ExpectPopup().Confirmation().
|
||||
Title(Equals("Undo")).
|
||||
Content(MatchesRegexp(`Are you sure you want to hard reset to '.*'\? An auto-stash will be performed if necessary\.`)).
|
||||
Confirm()
|
||||
}
|
||||
|
||||
confirmRedo := func() {
|
||||
t.ExpectPopup().Confirmation().
|
||||
Title(Equals("Redo")).
|
||||
Content(MatchesRegexp(`Are you sure you want to hard reset to '.*'\? An auto-stash will be performed if necessary\.`)).
|
||||
Confirm()
|
||||
}
|
||||
|
||||
t.Views().Commits().Focus().
|
||||
Lines(
|
||||
Contains("four").IsSelected(),
|
||||
Contains("three"),
|
||||
Contains("two"),
|
||||
Contains("one"),
|
||||
).
|
||||
Press(keys.Universal.Remove).
|
||||
Tap(confirmCommitDrop).
|
||||
Lines(
|
||||
Contains("three").IsSelected(),
|
||||
Contains("two"),
|
||||
Contains("one"),
|
||||
).
|
||||
Press(keys.Universal.Remove).
|
||||
Tap(confirmCommitDrop).
|
||||
Lines(
|
||||
Contains("two").IsSelected(),
|
||||
Contains("one"),
|
||||
).
|
||||
Press(keys.Universal.Undo).
|
||||
Tap(confirmUndo).
|
||||
Lines(
|
||||
Contains("three").IsSelected(),
|
||||
Contains("two"),
|
||||
Contains("one"),
|
||||
).
|
||||
Press(keys.Universal.Undo).
|
||||
Tap(confirmUndo).
|
||||
Lines(
|
||||
Contains("four").IsSelected(),
|
||||
Contains("three"),
|
||||
Contains("two"),
|
||||
Contains("one"),
|
||||
).
|
||||
Press(keys.Universal.Redo).
|
||||
Tap(confirmRedo).
|
||||
Lines(
|
||||
Contains("three").IsSelected(),
|
||||
Contains("two"),
|
||||
Contains("one"),
|
||||
).
|
||||
Press(keys.Universal.Redo).
|
||||
Tap(confirmRedo).
|
||||
Lines(
|
||||
Contains("two").IsSelected(),
|
||||
Contains("one"),
|
||||
)
|
||||
},
|
||||
})
|
@ -1 +0,0 @@
|
||||
ref: refs/heads/master
|
@ -1,8 +0,0 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = true
|
||||
ignorecase = true
|
||||
precomposeunicode = true
|
||||
[remote "origin"]
|
||||
url = /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/forcePush/actual/./repo
|
@ -1 +0,0 @@
|
||||
Unnamed repository; edit this file 'description' to name the repository.
|
@ -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
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
x�ÎA
|
||||
Â0@Q×9Eö‚d’ÌtD„®zŒ¤™`ÁØR"èííÜ~ÞâÏkkK· ñÔwU›†!¡TWŠj%©™±'*ÞgW}2[ÚõÕ-"²dÉ¡°gEVÉ•„e€ÄaÆ\Lz÷ǺÛq²×qºë'µí©—ym79 wNìÀ9sÔcªëŸÜ´o]žêÍz9‹
|
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
x�ŽA
|
||||
Â0E]çْɤÍD„®zŒd:ƒcK‰ ·7Gpõáñ|Þj]›…Ní±¾@D¦
ˆšªæPÉ1ÏC_³çC^ÍÆ(y!Ö”tÐŽ‚¤^'H1‹÷L&¿Ûc;ì4Ûë4ßå“ëþ”oõfa„ƒw.Ù3€s¦Ó~ªÉŸº©_]Ÿ‚æe-;7
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
# pack-refs with: peeled fully-peeled sorted
|
||||
77ead8cf99f5fa1084e9ffa40eb18f37157b22c8 refs/heads/master
|
@ -1 +0,0 @@
|
||||
e38b0dbe9634034957d8ebe0088587abd9ae938d
|
@ -1 +0,0 @@
|
||||
myfile4
|
@ -1 +0,0 @@
|
||||
b8568c2ecaef7e2f47647057ad47b040e8c5df53 branch 'master' of ../origin
|
@ -1 +0,0 @@
|
||||
ref: refs/heads/master
|
@ -1 +0,0 @@
|
||||
b8568c2ecaef7e2f47647057ad47b040e8c5df53
|
@ -1,16 +0,0 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = false
|
||||
logallrefupdates = true
|
||||
ignorecase = true
|
||||
precomposeunicode = true
|
||||
[user]
|
||||
email = CI@example.com
|
||||
name = CI
|
||||
[remote "origin"]
|
||||
url = ../origin
|
||||
fetch = +refs/heads/*:refs/remotes/origin/*
|
||||
[branch "master"]
|
||||
remote = origin
|
||||
merge = refs/heads/master
|
@ -1 +0,0 @@
|
||||
Unnamed repository; edit this file 'description' to name the repository.
|
Binary file not shown.
@ -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
|
@ -1,5 +0,0 @@
|
||||
0000000000000000000000000000000000000000 5558e3589b913d8280499a5f9bf698971a83c5bd CI <CI@example.com> 1648352009 +1100 commit (initial): myfile1
|
||||
5558e3589b913d8280499a5f9bf698971a83c5bd 77ead8cf99f5fa1084e9ffa40eb18f37157b22c8 CI <CI@example.com> 1648352009 +1100 commit: myfile2
|
||||
77ead8cf99f5fa1084e9ffa40eb18f37157b22c8 b8568c2ecaef7e2f47647057ad47b040e8c5df53 CI <CI@example.com> 1648352009 +1100 commit: myfile3
|
||||
b8568c2ecaef7e2f47647057ad47b040e8c5df53 77ead8cf99f5fa1084e9ffa40eb18f37157b22c8 CI <CI@example.com> 1648352009 +1100 reset: moving to HEAD^
|
||||
77ead8cf99f5fa1084e9ffa40eb18f37157b22c8 e38b0dbe9634034957d8ebe0088587abd9ae938d CI <CI@example.com> 1648352009 +1100 commit: myfile4
|
@ -1,5 +0,0 @@
|
||||
0000000000000000000000000000000000000000 5558e3589b913d8280499a5f9bf698971a83c5bd CI <CI@example.com> 1648352009 +1100 commit (initial): myfile1
|
||||
5558e3589b913d8280499a5f9bf698971a83c5bd 77ead8cf99f5fa1084e9ffa40eb18f37157b22c8 CI <CI@example.com> 1648352009 +1100 commit: myfile2
|
||||
77ead8cf99f5fa1084e9ffa40eb18f37157b22c8 b8568c2ecaef7e2f47647057ad47b040e8c5df53 CI <CI@example.com> 1648352009 +1100 commit: myfile3
|
||||
b8568c2ecaef7e2f47647057ad47b040e8c5df53 77ead8cf99f5fa1084e9ffa40eb18f37157b22c8 CI <CI@example.com> 1648352009 +1100 reset: moving to HEAD^
|
||||
77ead8cf99f5fa1084e9ffa40eb18f37157b22c8 e38b0dbe9634034957d8ebe0088587abd9ae938d CI <CI@example.com> 1648352009 +1100 commit: myfile4
|
@ -1,3 +0,0 @@
|
||||
0000000000000000000000000000000000000000 77ead8cf99f5fa1084e9ffa40eb18f37157b22c8 CI <CI@example.com> 1648352009 +1100 fetch origin: storing head
|
||||
77ead8cf99f5fa1084e9ffa40eb18f37157b22c8 b8568c2ecaef7e2f47647057ad47b040e8c5df53 CI <CI@example.com> 1648352009 +1100 update by push
|
||||
b8568c2ecaef7e2f47647057ad47b040e8c5df53 e38b0dbe9634034957d8ebe0088587abd9ae938d CI <CI@example.com> 1648352011 +1100 update by push
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
x�ÎA
|
||||
Â0@Q×9Eö‚d’ÌtD„®zŒ¤™`ÁØR"èííÜ~ÞâÏkkK· ñÔwU›†!¡TWŠj%©™±'*ÞgW}2[ÚõÕ-"²dÉ¡°gEVÉ•„e€ÄaÆ\Lz÷ǺÛq²×qºë'µí©—ym79 wNìÀ9sÔcªëŸÜ´o]žêÍz9‹
|
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
x�ŽA
|
||||
Â0E]çْɤÍD„®zŒd:ƒcK‰ ·7Gpõáñ|Þj]›…Ní±¾@D¦
ˆšªæPÉ1ÏC_³çC^ÍÆ(y!Ö”tÐŽ‚¤^'H1‹÷L&¿Ûc;ì4Ûë4ßå“ëþ”oõfa„ƒw.Ù3€s¦Ó~ªÉŸº©_]Ÿ‚æe-;7
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
||||
e38b0dbe9634034957d8ebe0088587abd9ae938d
|
@ -1 +0,0 @@
|
||||
e38b0dbe9634034957d8ebe0088587abd9ae938d
|
@ -1 +0,0 @@
|
||||
test1
|
@ -1 +0,0 @@
|
||||
test2
|
@ -1 +0,0 @@
|
||||
test4
|
@ -1 +0,0 @@
|
||||
{"KeyEvents":[{"Timestamp":1054,"Mod":0,"Key":256,"Ch":80},{"Timestamp":1736,"Mod":0,"Key":13,"Ch":13},{"Timestamp":2486,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]}
|
@ -1,41 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
set -e
|
||||
|
||||
cd $1
|
||||
|
||||
git init
|
||||
|
||||
git config user.email "CI@example.com"
|
||||
git config user.name "CI"
|
||||
|
||||
echo test1 > myfile1
|
||||
git add .
|
||||
git commit -am "myfile1"
|
||||
echo test2 > myfile2
|
||||
git add .
|
||||
git commit -am "myfile2"
|
||||
|
||||
cd ..
|
||||
git clone --bare ./repo origin
|
||||
|
||||
cd repo
|
||||
|
||||
git remote add origin ../origin
|
||||
git fetch origin
|
||||
git branch --set-upstream-to=origin/master master
|
||||
|
||||
echo test3 > myfile3
|
||||
git add .
|
||||
git commit -am "myfile3"
|
||||
|
||||
git push origin master
|
||||
|
||||
git reset --hard HEAD^
|
||||
|
||||
echo test4 > myfile4
|
||||
git add .
|
||||
git commit -am "myfile4"
|
||||
|
@ -1 +0,0 @@
|
||||
{ "description": "force push with lease if required", "speed": 10 }
|
@ -1 +0,0 @@
|
||||
ref: refs/heads/master
|
@ -1,8 +0,0 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = true
|
||||
ignorecase = true
|
||||
precomposeunicode = true
|
||||
[remote "origin"]
|
||||
url = /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/forcePushMultiple/actual/./repo
|
@ -1 +0,0 @@
|
||||
Unnamed repository; edit this file 'description' to name the repository.
|
@ -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
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
x�ÍA
|
||||
ƒ0@Ñ®sŠÙJ&NÇ¥\yŒ1™PÁ!ERÐÛ×#tûyðS5[ ñ¥mªà•SñÂs?hÌDŠ‘sÄ Xzš©ËLEÒ=8ù¶wÝ`œà1N/ÝÅ>«ÞRµ' Sìh €pEôÞ�õœ4ý“;;ʲ*º2K,Í
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
# pack-refs with: peeled fully-peeled sorted
|
||||
e67f344f42afdb79c87a590f22537160241d8d61 refs/heads/master
|
||||
e67f344f42afdb79c87a590f22537160241d8d61 refs/heads/other_branch
|
@ -1 +0,0 @@
|
||||
e67f344f42afdb79c87a590f22537160241d8d61
|
@ -1 +0,0 @@
|
||||
e67f344f42afdb79c87a590f22537160241d8d61
|
@ -1 +0,0 @@
|
||||
myfile4
|
@ -1,2 +0,0 @@
|
||||
bd739fb752ed02ccd49422196e31599c87ff90ad branch 'master' of ../origin
|
||||
fe67c3eaf819025990d3688d5f147a064e669ca5 not-for-merge branch 'other_branch' of ../origin
|
@ -1 +0,0 @@
|
||||
ref: refs/heads/master
|
@ -1 +0,0 @@
|
||||
fe67c3eaf819025990d3688d5f147a064e669ca5
|
@ -1,21 +0,0 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = false
|
||||
logallrefupdates = true
|
||||
ignorecase = true
|
||||
precomposeunicode = true
|
||||
[user]
|
||||
email = CI@example.com
|
||||
name = CI
|
||||
[push]
|
||||
default = matching
|
||||
[remote "origin"]
|
||||
url = ../origin
|
||||
fetch = +refs/heads/*:refs/remotes/origin/*
|
||||
[branch "master"]
|
||||
remote = origin
|
||||
merge = refs/heads/master
|
||||
[branch "other_branch"]
|
||||
remote = origin
|
||||
merge = refs/heads/other_branch
|
@ -1 +0,0 @@
|
||||
Unnamed repository; edit this file 'description' to name the repository.
|
Binary file not shown.
@ -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
|
@ -1,10 +0,0 @@
|
||||
0000000000000000000000000000000000000000 7a35f0bb6bd8dc18ae462465e51f02362ba6babe CI <CI@example.com> 1648349421 +1100 commit (initial): myfile1
|
||||
7a35f0bb6bd8dc18ae462465e51f02362ba6babe e67f344f42afdb79c87a590f22537160241d8d61 CI <CI@example.com> 1648349421 +1100 commit: myfile2
|
||||
e67f344f42afdb79c87a590f22537160241d8d61 e67f344f42afdb79c87a590f22537160241d8d61 CI <CI@example.com> 1648349421 +1100 checkout: moving from master to other_branch
|
||||
e67f344f42afdb79c87a590f22537160241d8d61 e67f344f42afdb79c87a590f22537160241d8d61 CI <CI@example.com> 1648349421 +1100 checkout: moving from other_branch to master
|
||||
e67f344f42afdb79c87a590f22537160241d8d61 bd739fb752ed02ccd49422196e31599c87ff90ad CI <CI@example.com> 1648349421 +1100 commit: myfile3
|
||||
bd739fb752ed02ccd49422196e31599c87ff90ad e67f344f42afdb79c87a590f22537160241d8d61 CI <CI@example.com> 1648349421 +1100 reset: moving to HEAD^
|
||||
e67f344f42afdb79c87a590f22537160241d8d61 e67f344f42afdb79c87a590f22537160241d8d61 CI <CI@example.com> 1648349421 +1100 checkout: moving from master to other_branch
|
||||
e67f344f42afdb79c87a590f22537160241d8d61 fe67c3eaf819025990d3688d5f147a064e669ca5 CI <CI@example.com> 1648349421 +1100 commit: myfile4
|
||||
fe67c3eaf819025990d3688d5f147a064e669ca5 e67f344f42afdb79c87a590f22537160241d8d61 CI <CI@example.com> 1648349422 +1100 reset: moving to HEAD^
|
||||
e67f344f42afdb79c87a590f22537160241d8d61 e67f344f42afdb79c87a590f22537160241d8d61 CI <CI@example.com> 1648349422 +1100 checkout: moving from other_branch to master
|
@ -1,4 +0,0 @@
|
||||
0000000000000000000000000000000000000000 7a35f0bb6bd8dc18ae462465e51f02362ba6babe CI <CI@example.com> 1648349421 +1100 commit (initial): myfile1
|
||||
7a35f0bb6bd8dc18ae462465e51f02362ba6babe e67f344f42afdb79c87a590f22537160241d8d61 CI <CI@example.com> 1648349421 +1100 commit: myfile2
|
||||
e67f344f42afdb79c87a590f22537160241d8d61 bd739fb752ed02ccd49422196e31599c87ff90ad CI <CI@example.com> 1648349421 +1100 commit: myfile3
|
||||
bd739fb752ed02ccd49422196e31599c87ff90ad e67f344f42afdb79c87a590f22537160241d8d61 CI <CI@example.com> 1648349421 +1100 reset: moving to HEAD^
|
@ -1,3 +0,0 @@
|
||||
0000000000000000000000000000000000000000 e67f344f42afdb79c87a590f22537160241d8d61 CI <CI@example.com> 1648349421 +1100 branch: Created from HEAD
|
||||
e67f344f42afdb79c87a590f22537160241d8d61 fe67c3eaf819025990d3688d5f147a064e669ca5 CI <CI@example.com> 1648349421 +1100 commit: myfile4
|
||||
fe67c3eaf819025990d3688d5f147a064e669ca5 e67f344f42afdb79c87a590f22537160241d8d61 CI <CI@example.com> 1648349422 +1100 reset: moving to HEAD^
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user