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

Add compare-commits demo (#2929)

This commit is contained in:
Jesse Duffield 2023-08-12 17:32:15 +10:00 committed by GitHub
commit d99e983236
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 99 additions and 25 deletions

View File

@ -32,6 +32,20 @@ If you're a mere mortal like me and you're tired of hearing how powerful git is
## Table of contents
- [Features](#features)
- [Stage individual lines](#stage-individual-lines)
- [Interactive Rebase](#interactive-rebase)
- [Cherry-pick](#cherry-pick)
- [Bisect](#bisect)
- [Nuke the working tree](#nuke-the-working-tree)
- [Amend an old commit](#amend-an-old-commit)
- [Filter](#filter)
- [Invoke a custom command](#invoke-a-custom-command)
- [Worktrees](#worktrees)
- [Rebase magic (custom patches)](#rebase-magic-custom-patches)
- [Rebase from marked base commit](#rebase-from-marked-base-commit)
- [Undo](#undo)
- [Commit graph](#commit-graph)
- [Compare two commits](#compare-two-commits)
- [Tutorials](#tutorials)
- [Installation](#installation)
- [Binary releases](#binary-releases)
@ -150,6 +164,12 @@ When viewing the commit graph in an enlarged window (use `+` and `_` to cycle wi
![commit_graph](../assets/demo/commit_graph-compressed.gif)
### Compare two commits
If you press `shift+w` on a commit (or branch/ref) a menu will open that allows you to mark that commit so that any other commit you select will be diffed against it. Once you've selected the second commit, you'll see the diff in the main view and if you press `<enter>` you'll see the files of the diff. You can press `shift+w` to view the diff menu again to see options like reversing the diff direction or exiting diff mode. You can also exit diff mode by pressing `<escape>`.
![diff_commits](../assets/demo/diff_commits-compressed.gif)
## Tutorials
[<img src="https://i.imgur.com/sVEktDn.png">](https://youtu.be/CPLdltN7wgE)

View File

@ -11,7 +11,7 @@ var AmendOldCommit = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
config.UserConfig.Gui.NerdFontsVersion = "3"
setDefaultDemoConfig(config)
config.UserConfig.Gui.ShowFileTree = false
},
SetupRepo: func(shell *Shell) {

View File

@ -11,7 +11,7 @@ var Bisect = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
config.UserConfig.Gui.NerdFontsVersion = "3"
setDefaultDemoConfig(config)
},
SetupRepo: func(shell *Shell) {
shell.CreateFile("my-file.txt", "myfile content")

View File

@ -11,7 +11,7 @@ var CherryPick = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
config.UserConfig.Gui.NerdFontsVersion = "3"
setDefaultDemoConfig(config)
},
SetupRepo: func(shell *Shell) {
shell.CreateNCommitsWithRandomMessages(50)

View File

@ -11,7 +11,7 @@ var CommitAndPush = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
config.UserConfig.Gui.NerdFontsVersion = "3"
setDefaultDemoConfig(config)
},
SetupRepo: func(shell *Shell) {
shell.CreateFile("my-file.txt", "myfile content")

View File

@ -11,14 +11,8 @@ var CommitGraph = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
config.UserConfig.Gui.NerdFontsVersion = "3"
config.UserConfig.Gui.AuthorColors = map[string]string{
"Fredrica Greenhill": "#fb5aa3",
"Oscar Reuenthal": "#86c82f",
"Paul Oberstein": "#ffd500",
"Siegfried Kircheis": "#fe7e11",
"Yang Wen-li": "#8e3ccb",
}
setDefaultDemoConfig(config)
setGeneratedAuthorColours(config)
},
SetupRepo: func(shell *Shell) {
shell.CreateRepoHistory()

View File

@ -24,9 +24,7 @@ var CustomCommand = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(cfg *config.AppConfig) {
// No idea why I had to use version 2: it should be using my own computer's
// font and the one iterm uses is version 3.
cfg.UserConfig.Gui.NerdFontsVersion = "2"
setDefaultDemoConfig(cfg)
cfg.UserConfig.CustomCommands = []config.CustomCommand{
{

View File

@ -21,7 +21,7 @@ var CustomPatch = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(cfg *config.AppConfig) {
cfg.UserConfig.Gui.NerdFontsVersion = "3"
setDefaultDemoConfig(cfg)
},
SetupRepo: func(shell *Shell) {
shell.CreateNCommitsWithRandomMessages(30)

View File

@ -0,0 +1,44 @@
package demo
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var DiffCommits = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Diff two commits",
ExtraCmdArgs: []string{},
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
setDefaultDemoConfig(config)
config.UserConfig.Gui.ShowFileTree = false
config.UserConfig.Gui.ShowCommandLog = false
},
SetupRepo: func(shell *Shell) {
shell.CreateNCommitsWithRandomMessages(50)
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.SetCaptionPrefix("Compare two commits")
t.Wait(1000)
t.Views().Commits().
Focus().
NavigateToLine(Contains("Replace deprecated lifecycle methods in React components")).
Wait(1000).
Press(keys.Universal.DiffingMenu).
Tap(func() {
t.ExpectPopup().Menu().
Title(Equals("Diffing")).
TopLines(
MatchesRegexp(`Diff .*`),
).
Wait(500).
Confirm()
}).
NavigateToLine(Contains("Move constants to a separate config file")).
Wait(1000).
PressEnter()
},
})

View File

@ -11,7 +11,7 @@ var Filter = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
config.UserConfig.Gui.NerdFontsVersion = "3"
setDefaultDemoConfig(config)
},
SetupRepo: func(shell *Shell) {
shell.CreateNCommitsWithRandomMessages(30)

View File

@ -11,7 +11,7 @@ var InteractiveRebase = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
config.UserConfig.Gui.NerdFontsVersion = "3"
setDefaultDemoConfig(config)
},
SetupRepo: func(shell *Shell) {
shell.CreateFile("my-file.txt", "myfile content")

View File

@ -11,7 +11,7 @@ var NukeWorkingTree = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
config.UserConfig.Gui.NerdFontsVersion = "3"
setDefaultDemoConfig(config)
config.UserConfig.Gui.AnimateExplosion = true
},
SetupRepo: func(shell *Shell) {

View File

@ -11,7 +11,7 @@ var RebaseOnto = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
config.UserConfig.Gui.NerdFontsVersion = "3"
setDefaultDemoConfig(config)
},
SetupRepo: func(shell *Shell) {
shell.CreateNCommitsWithRandomMessages(60)

View File

@ -0,0 +1,19 @@
package demo
import "github.com/jesseduffield/lazygit/pkg/config"
// Gives us nicer colours when we generate a git repo history with `shell.CreateRepoHistory()`
func setGeneratedAuthorColours(config *config.AppConfig) {
config.UserConfig.Gui.AuthorColors = map[string]string{
"Fredrica Greenhill": "#fb5aa3",
"Oscar Reuenthal": "#86c82f",
"Paul Oberstein": "#ffd500",
"Siegfried Kircheis": "#fe7e11",
"Yang Wen-li": "#8e3ccb",
}
}
func setDefaultDemoConfig(config *config.AppConfig) {
// demos look much nicers with icons shown
config.UserConfig.Gui.NerdFontsVersion = "3"
}

View File

@ -39,7 +39,7 @@ var StageLines = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
config.UserConfig.Gui.NerdFontsVersion = "3"
setDefaultDemoConfig(config)
config.UserConfig.Gui.ShowFileTree = false
config.UserConfig.Gui.ShowCommandLog = false
},

View File

@ -11,7 +11,7 @@ var Undo = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(config *config.AppConfig) {
config.UserConfig.Gui.NerdFontsVersion = "3"
setDefaultDemoConfig(config)
},
SetupRepo: func(shell *Shell) {
shell.CreateNCommitsWithRandomMessages(30)

View File

@ -11,9 +11,7 @@ var WorktreeCreateFromBranches = NewIntegrationTest(NewIntegrationTestArgs{
Skip: false,
IsDemo: true,
SetupConfig: func(cfg *config.AppConfig) {
// No idea why I had to use version 2: it should be using my own computer's
// font and the one iterm uses is version 3.
cfg.UserConfig.Gui.NerdFontsVersion = "2"
setDefaultDemoConfig(cfg)
},
SetupRepo: func(shell *Shell) {
shell.CreateNCommitsWithRandomMessages(30)

View File

@ -96,6 +96,7 @@ var tests = []*components.IntegrationTest{
demo.CommitGraph,
demo.CustomCommand,
demo.CustomPatch,
demo.DiffCommits,
demo.Filter,
demo.InteractiveRebase,
demo.NukeWorkingTree,