summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/cd.yml4
-rw-r--r--.github/workflows/ci.yml18
-rw-r--r--.golangci.yml2
-rw-r--r--Dockerfile2
-rw-r--r--README.md2
-rw-r--r--docs/Config.md647
-rw-r--r--docs/Custom_Command_Keybindings.md2
-rw-r--r--go.mod3
-rw-r--r--go.sum2
-rw-r--r--pkg/commands/git.go2
-rw-r--r--pkg/commands/git_commands/branch_loader.go51
-rw-r--r--pkg/commands/git_commands/branch_loader_test.go102
-rw-r--r--pkg/commands/git_commands/branch_test.go5
-rw-r--r--pkg/commands/git_commands/commit_loader.go8
-rw-r--r--pkg/commands/git_commands/commit_loader_test.go33
-rw-r--r--pkg/commands/git_commands/commit_test.go8
-rw-r--r--pkg/commands/git_commands/file_loader_test.go1
-rw-r--r--pkg/commands/git_commands/flow_test.go2
-rw-r--r--pkg/commands/git_commands/rebase_test.go3
-rw-r--r--pkg/commands/git_commands/reflog_commit_loader_test.go1
-rw-r--r--pkg/commands/git_commands/repo_paths_test.go1
-rw-r--r--pkg/commands/git_commands/stash.go17
-rw-r--r--pkg/commands/git_commands/stash_loader_test.go1
-rw-r--r--pkg/commands/git_commands/stash_test.go3
-rw-r--r--pkg/commands/git_commands/sync_test.go3
-rw-r--r--pkg/commands/git_commands/tag_loader_test.go1
-rw-r--r--pkg/commands/git_commands/working_tree_test.go9
-rw-r--r--pkg/commands/git_commands/worktree_loader.go2
-rw-r--r--pkg/commands/git_commands/worktree_loader_test.go1
-rw-r--r--pkg/commands/git_config/cached_git_config_test.go2
-rw-r--r--pkg/commands/hosting_service/hosting_service_test.go1
-rw-r--r--pkg/commands/models/branch.go30
-rw-r--r--pkg/commands/oscommands/cmd_obj_runner.go7
-rw-r--r--pkg/commands/oscommands/os.go7
-rw-r--r--pkg/commands/patch/patch_test.go4
-rw-r--r--pkg/config/editor_presets.go33
-rw-r--r--pkg/config/user_config.go27
-rw-r--r--pkg/gui/context/menu_context.go1
-rw-r--r--pkg/gui/context/suggestions_context.go11
-rw-r--r--pkg/gui/controllers/branches_controller.go2
-rw-r--r--pkg/gui/controllers/confirmation_controller.go10
-rw-r--r--pkg/gui/controllers/custom_command_action.go27
-rw-r--r--pkg/gui/controllers/diffing_menu_action.go1
-rw-r--r--pkg/gui/controllers/helpers/confirmation_helper.go14
-rw-r--r--pkg/gui/controllers/local_commits_controller.go1
-rw-r--r--pkg/gui/controllers/status_controller.go18
-rw-r--r--pkg/gui/controllers/suggestions_controller.go28
-rw-r--r--pkg/gui/controllers/sync_controller.go4
-rw-r--r--pkg/gui/filetree/build_tree_test.go4
-rw-r--r--pkg/gui/filetree/file_node_test.go2
-rw-r--r--pkg/gui/filetree/file_tree_test.go1
-rw-r--r--pkg/gui/gui.go2
-rw-r--r--pkg/gui/mergeconflicts/find_conflicts.go2
-rw-r--r--pkg/gui/mergeconflicts/state_test.go1
-rw-r--r--pkg/gui/patch_exploring/focus_test.go1
-rw-r--r--pkg/gui/popup/popup_handler.go16
-rw-r--r--pkg/gui/presentation/branches.go8
-rw-r--r--pkg/gui/presentation/branches_test.go24
-rw-r--r--pkg/gui/presentation/commits_test.go1
-rw-r--r--pkg/gui/presentation/files_test.go2
-rw-r--r--pkg/gui/presentation/graph/graph.go1
-rw-r--r--pkg/gui/presentation/graph/graph_test.go2
-rw-r--r--pkg/gui/services/custom_commands/menu_generator_test.go1
-rw-r--r--pkg/gui/services/custom_commands/models.go100
-rw-r--r--pkg/gui/services/custom_commands/resolver.go1
-rw-r--r--pkg/gui/services/custom_commands/session_state_loader.go182
-rw-r--r--pkg/gui/style/style_test.go2
-rw-r--r--pkg/gui/types/common.go22
-rw-r--r--pkg/i18n/english.go2
-rw-r--r--pkg/integration/components/prompt_driver.go18
-rw-r--r--pkg/integration/components/runner.go2
-rw-r--r--pkg/integration/components/shell.go4
-rw-r--r--pkg/integration/tests/branch/delete.go4
-rw-r--r--pkg/integration/tests/branch/delete_remote_branch_with_credential_prompt.go2
-rw-r--r--pkg/integration/tests/branch/rebase_to_upstream.go2
-rw-r--r--pkg/integration/tests/branch/reset_to_upstream.go4
-rw-r--r--pkg/integration/tests/custom_commands/delete_from_history.go41
-rw-r--r--pkg/integration/tests/custom_commands/edit_history.go31
-rw-r--r--pkg/integration/tests/stash/stash_staged_partial_file.go70
-rw-r--r--pkg/integration/tests/status/click_repo_name_to_open_repos_menu.go18
-rw-r--r--pkg/integration/tests/status/click_to_focus.go35
-rw-r--r--pkg/integration/tests/status/click_working_tree_state_to_open_rebase_options_menu.go27
-rw-r--r--pkg/integration/tests/sync/force_push_triangular.go65
-rw-r--r--pkg/integration/tests/test_list.go8
-rw-r--r--pkg/jsonschema/generate_config_docs.go269
-rw-r--r--pkg/jsonschema/generator.go1
-rw-r--r--pkg/tasks/tasks.go2
-rw-r--r--pkg/utils/lines.go59
-rw-r--r--pkg/utils/lines_test.go64
-rw-r--r--pkg/utils/slice_test.go4
-rw-r--r--pkg/utils/yaml_utils/yaml_utils_test.go1
-rw-r--r--schema/config.json582
-rw-r--r--vendor/github.com/iancoleman/orderedmap/LICENSE21
-rw-r--r--vendor/github.com/iancoleman/orderedmap/orderedmap.go266
-rw-r--r--vendor/github.com/iancoleman/orderedmap/readme.md81
-rw-r--r--vendor/modules.txt3
96 files changed, 2405 insertions, 820 deletions
diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
index 0d126d16e..823f2bc80 100644
--- a/.github/workflows/cd.yml
+++ b/.github/workflows/cd.yml
@@ -3,7 +3,7 @@ name: Continuous Delivery
on:
push:
tags:
- - 'v*'
+ - "v*"
jobs:
goreleaser:
@@ -16,7 +16,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v4
with:
- go-version: 1.21.x
+ go-version: 1.22.x
- name: Run goreleaser
uses: goreleaser/goreleaser-action@v4
with:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9f225ccfa..c0e472727 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,7 +1,7 @@
name: Continuous Integration
env:
- GO_VERSION: 1.21
+ GO_VERSION: 1.22
on:
push:
@@ -32,7 +32,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v4
with:
- go-version: 1.21.x
+ go-version: 1.22.x
- name: Test code
# we're passing -short so that we skip the integration tests, which will be run in parallel below
run: |
@@ -89,7 +89,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v4
with:
- go-version: 1.21.x
+ go-version: 1.22.x
- name: Print git version
run: git --version
- name: Test code
@@ -115,7 +115,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v4
with:
- go-version: 1.21.x
+ go-version: 1.22.x
- name: Build linux binary
run: |
GOOS=linux go build
@@ -142,7 +142,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v4
with:
- go-version: 1.21.x
+ go-version: 1.22.x
- name: Check Vendor Directory
# ensure our vendor directory matches up with our go modules
run: |
@@ -168,7 +168,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v4
with:
- go-version: 1.21.x
+ go-version: 1.22.x
- name: Lint
uses: golangci/golangci-lint-action@v3.7.0
with:
@@ -188,11 +188,17 @@ jobs:
upload-coverage:
# List all jobs that produce coverage files
needs: [unit-tests, integration-tests]
+ if: github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
+ - name: Setup Go
+ uses: actions/setup-go@v4
+ with:
+ go-version: 1.22.x
+
- name: Download all coverage artifacts
uses: actions/download-artifact@v3
with:
diff --git a/.golangci.yml b/.golangci.yml
index c8884c93a..85a956508 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -30,5 +30,5 @@ linters-settings:
max-func-lines: 0
run:
- go: '1.21'
+ go: '1.22'
timeout: 10m
diff --git a/Dockerfile b/Dockerfile
index 976f2221d..594504468 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,7 +2,7 @@
# docker build -t lazygit .
# docker run -it lazygit:latest /bin/sh
-FROM golang:1.21 as build
+FROM golang:1.22 as build
WORKDIR /go/src/github.com/jesseduffield/lazygit/
COPY go.mod go.sum ./
RUN go mod download
diff --git a/README.md b/README.md
index 31a5103d0..64e9ce03e 100644
--- a/README.md
+++ b/README.md
@@ -46,7 +46,7 @@ A simple terminal UI for git commands
</p>
<p align="center">
-<!-- sponsors --><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="Mark Lussier" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="Dean Herbert" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="Peter Bjorklund" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="Reilly Wood" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="Oliver Günther" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="Pawan Dhananjay" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="Bartłomiej Dach" /></a><a href="https://github.com/davidklsn"><img src="https://github.com/davidklsn.png" width="60px" alt="David Karlsson" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="Carsten Gehling" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="CEUK" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="Akos Putz" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="Xetera" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="Holden Lucas" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="Chau Tran" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="matejcik" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="theAverageDev (Luca Tumedei)" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="Zach Fuller" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="Ivan Zaitsev" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="Nicholas Cloud" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="LightQuantum" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="Gabriel Saillard" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="Aliaksandr Stelmachonak" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="Burgy Benjamin" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="Joe Klemmer" /></a><a href="https://github.com/limenet"><img src="https://github.com/limenet.png" width="60px" alt="Linus Metzler" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="Tobias Lütke" /></a><a href="https://github.com/benbfortis"><img src="https://github.com/benbfortis.png" width="60px" alt="Ben Beaumont" /></a><a href="https://github.com/jakewarren"><img src="https://github.com/jakewarren.png" width="60px" alt="" /></a><a href="https://github.com/tgpholly"><img src="https://github.com/tgpholly.png" width="60px" alt="Holly" /></a><a href="https://github.com/jisantuc"><img src="https://github.com/jisantuc.png" width="60px" alt="James Santucci" /></a><a href="https://github.com/bitprophet"><img src="https://github.com/bitprophet.png" width="60px" alt="Jeff Forcier" /></a><a href="https://github.com/kohane27"><img src="https://github.com/kohane27.png" width="60px" alt="kohane27" /></a><a href="https://github.com/tayleighr"><img src="https://github.com/tayleighr.png" width="60px" alt="" /></a><a href="https://github.com/Novakov"><img src="https://github.com/Novakov.png" width="60px" alt="Maciej T. Nowak" /></a><a href="https://github.com/mthuggett"><img src="https://github.com/mthuggett.png" width="60px" alt="Michael Huggett" /></a><a href="https://github.com/farzadmf"><img src="https://github.com/farzadmf.png" width="60px" alt="Farzad Majidfayyaz" /></a><a href="https://github.com/nekhaevskiy"><img src="https://github.com/nekhaevskiy.png" width="60px" alt="Yury" /></a><a href="https://github.com/reivilibre"><img src="https://github.com/reivilibre.png" width="60px" alt="" /></a><a href="https://github.com/andreaskurth"><img src="https://github.com/andreaskurth.png" width="60px" alt="Andreas Kurth" /></a><a href="https://github.com/BSteffaniak"><img src="https://github.com/BSteffaniak.png" width="60px" alt="Braden Steffaniak" /></a><a href="https://github.com/jordan-gillard"><img src="https://github.com/jordan-gillard.png" width="60px" alt="Jordan Gillard" /></a><a href="https://github.com/smangels"><img src="https://github.com/smangels.png" width="60px" alt="Sebastian" /></a><a href="https://github.com/George-Spanos"><img src="https://github.com/George-Spanos.png" width="60px" alt="George Spanos" /></a><a href="https://github.com/BenGH28"><img src="https://github.com/BenGH28.png" width="60px" alt="Ben Hunt" /></a><a href="https://github.com/abradner"><img src="https://github.com/abradner.png" width="60px" alt="Alex Bradner" /></a><a href="https://github.com/frantisekstanko"><img src="https://github.com/frantisekstanko.png" width="60px" alt="Frantisek Stanko" /></a><a href="https://github.com/amslezak"><img src="https://github.com/amslezak.png" width="60px" alt="Andy Slezak" /></a><a href="https://github.com/mkock"><img src="https://github.com/mkock.png" width="60px" alt="Martin Kock" /></a><a href="https://github.com/illarionvk"><img src="https://github.com/illarionvk.png" width="60px" alt="Illarion Koperski" /></a><a href="https://github.com/WhiteBlackGoose"><img src="https://github.com/WhiteBlackGoose.png" width="60px" alt="" /></a><a href="https://github.com/jessealama"><img src="https://github.com/jessealama.png" width="60px" alt="Jesse Alama" /></a><a href="https://github.com/codacy"><img src="https://github.com/codacy.png" width="60px" alt="Codacy" /></a><a href="https://github.com/colbr"><img src="https://github.com/colbr.png" width="60px" alt="Brett" /></a><a href="https://github.com/heijmans"><img src="https://github.com/heijmans.png" width="60px" alt="Jan Heijmans" /></a><a href="https://github.com/Vesther"><img src="https://github.com/Vesther.png" width="60px" alt="Kevin Nowald" /></a><a href="https://github.com/sempruijs"><img src="https://github.com/sempruijs.png" width="60px" alt="sem pruijs" /></a><a href="https://github.com/omarluq"><img src="https://github.com/omarluq.png" width="60px" alt="Omar Luq " /></a><a href="https://github.com/ethanjli"><img src="https://github.com/ethanjli.png" width="60px" alt="Ethan Li" /></a><a href="https://github.com/phubaba"><img src="https://github.com/phubaba.png" width="60px" alt="" /></a><a href="https://github.com/fomrat"><img src="https://github.com/fomrat.png" width="60px" alt="Brian MacAskill" /></a><a href="https://github.com/canhazcodez"><img src="https://github.com/canhazcodez.png" width="60px" alt="Maxi" /></a><a href="https://github.com/nikbrunner"><img src="https://github.com/nikbrunner.png" width="60px" alt="nbr" /></a><a href="https://github.com/neunkasulle"><img src="https://github.com/neunkasulle.png" width="60px" alt="Jan Zenkner" /></a><a href="https://github.com/ahkohd"><img src="https://github.com/ahkohd.png" width="60px" alt="Victor Aremu" /></a><a href="https://github.com/bohdan-shulha"><img src="https://github.com/bohdan-shulha.png" width="60px" alt="Bohdan Shulha" /></a><a href="https://github.com/RVxLab"><img src="https://github.com/RVxLab.png" width="60px" alt="" /></a><a href="https://github.com/c3cris"><img src="https://github.com/c3cris.png" width="60px" alt="Cris" /></a><a href="https:/