summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2023-07-20Update release notes config and add CI checkgithub-release-notesJesse Duffield
2023-07-19Add release config for generating release notespre-release-0.39-2Jesse Duffield
After going and adding labels for all of these I found out that 'improvement' should be 'enhancement' and 'bugfix' should be 'bug' but I don't know how to bulk update them (and I can't rename because the desired labels already exist). I'll work that out later, this is good enough for now
2023-07-19Properly fix accordion issue (#2792)pre-release-0.39Jesse Duffield
2023-07-19Add integration test for accordion modeJesse Duffield
2023-07-19Properly fix accordion issueJesse Duffield
The true issue was that we were focusing the line in the view before it gets resized in the layout function. This meant if the view was squashed in accordion mode, the view wouldn't know how to set the cursor/origin to focus the line. Now we've got a queue of 'after layout' functions i.e. functions to call at the end of the layout function, right before views are drawn. The only caveat is that we can't have an infinite buffer so we're arbitrarily capping it at 1000 and dropping functions if we exceed that limit. But that really should never happen.
2023-07-19Fix accordion issue (#2791)Jesse Duffield
2023-07-19Fix accordion issueJesse Duffield
This fixes the issue in accordion mode where the current line wasn't in the viewport upon focus. It doesn't perfectly fix it: the current line always appears at the top of the view. But it's good enough to cut a new release. The proper fix is to only focus the line after the view has had its height adjusted.
2023-07-19Updated README.mdREADME-bot
2023-07-19Fix crash when a background fetch prompts for credentials (#2789)Stefan Haller
2023-07-18Fix crash when a background fetch prompts for credentialsStefan Haller
This happens consistently for my when I close my MacBook's lid. It seems that MacOS locks the user's keychain in this case, and since I have my keychain provide the pass phrases for my ssh keys, fetching fails because it tries to prompt me for a pass phrase. This all worked correctly already, we have the FailOnCredentialRequest() mechanism specifically for this situation, so all is great. The only problem was that it was trying to pause the ongoing task while prompting the user for input; but the task is nil for a background fetch (and should be).
2023-07-15Show all tags in commits panel (#2776)Stefan Haller
2023-07-15Fix populating the Commit.Tags fieldStefan Haller
We now store all tags in this field if there are several.
2023-07-15Extend commit_loader test to show how the Tags field is populatedStefan Haller
It shows that right now, we take only the first tag if there are multiple. Judging from how the code is written, I'm not sure this was intentional.
2023-07-15Fix potentially wrong help text in commit message panel (#2777)Stefan Haller
2023-07-15Fix potentially wrong help text in commit message panelStefan Haller
It said "Press tab to toggle focus", which is wrong for people who remapped their togglePanel key binding to something else. Print the actual key binding instead.
2023-07-15Updated README.mdREADME-bot
2023-07-15Add test for cmd obj cloning (#2780)Jesse Duffield
2023-07-15Add test for cmd obj cloningJesse Duffield
2023-07-14config: rely on .gitconfig for verbose commit messages (#2664)Stefan Haller
As discussed in https://github.com/jesseduffield/lazygit/pull/2599, it makes more sense to have the user specify whether they want verbose commits from their own git config, rather than lazygit config. This means that we can remove all the code (including test coverage) associated with the custom verbose flag, and lazygit will just inherit the .gitconfig settings automatically. --- Tested visually locally, as well as running the tests that all pass.
2023-07-14config: rely on .gitconfig for verbose commit messagesScott Callaway
As discussed in https://github.com/jesseduffield/lazygit/pull/2599, it makes more sense to have the user specify whether they want verbose commits from their own git config, rather than lazygit config. This means that we can remove all the code (including test coverage) associated with the custom verbose flag, and lazygit will just inherit the .gitconfig settings automatically.
2023-07-13Allow checking for merge conflicts after running a custom command (#2773)Jesse Duffield
2023-07-13Allow checking for merge conflicts after running a custom commandJesse Duffield
We have a use-case to rebind 'm' to the merge action in the branches panel. There's three ways to handle this: 1) For all global keybindings, define a per-panel key that invokes it 2) Give a name to all controller actions and allow them to be invoked in custom commands 3) Allow checking for merge conflicts after running a custom command so that users can add their own 'git merge' custom command that matches the in-built action Option 1 is hairy, Option 2 though good for users introduces new backwards compatibility issues that I don't want to do right now, and option 3 is trivially easy to implement so that's what I'm doing. I've put this under an 'after' key so that we can add more things later. I'm imagining other things like being able to move the cursor to a newly added item etc. I considered always running this hook by default but I'd rather not: it's matching on the output text and I'd rather something like that be explicitly opted-into to avoid cases where we erroneously believe that there are conflicts.
2023-07-11Updated README.mdREADME-bot
2023-07-11Do not quote initial branch arg when creating repo (#2771)Jesse Duffield
2023-07-11Do not quote initial branch arg when creating repoJesse Duffield
Also, we shouldn't pass the initial branch arg if it's empty.
2023-07-10Run integration tests with all supported git versions (#2754)Stefan Haller
Run integration tests with various different git versions, more or less randomly picked from our range of supported versions. Based on @Ryooooooga's work in #2459, but also restructured a bit. All tests pass for all git versions, but only after cherry-picking #2747. I decided to go with @Ryooooooga's approach and do it without using docker. I also didn't use docker locally; to reproduce the various failures that I had to fix, I simply installed the respective git versions locally and used something like `PATH=~/git-versions/2.25.1/bin:$PATH ./scripts/run_integration_tests.sh`.
2023-07-10Run integration tests with various git versionsStefan Haller
We pick a few interesting ones in the range of supported versions. Based on work by Ryooooooga <eial5q265e5@gmail.com>.
2023-07-10Update checkout and cache action versionsStefan Haller
2023-07-10Fix pull rebase testsStefan Haller
It seems that older git versions would drop empty commits when rebasing. Since this aspect is not relevant to what we're testing here, fix this by simply avoiding empty commits in these tests.
2023-07-10Fix conflict testRyooooooga
The test apply_in_reverse_with_conflict.go fails in git versions 2.30.8 and earlier. Apparently the output "Applied patch to 'file2' cleanly" was only added more recently. It's not essential that we check this output.
2023-07-10Replace uses of "git stash save" with "git stash push"Stefan Haller
Save has been deprecated for a while, push is the recommended way to save a stash. Push has been available since 2.13, so we can use it without problems.
2023-07-10Fix git stash calls for older git versionsStefan Haller
Older git versions are pickier about parameter order: for "store", the sha argument must come last, and for "save", the message must come last.
2023-07-10Fix Shell.Stash() for older versions of gitStefan Haller
Older versions need an explicit "push" subcommand for the -m option to be recognized.
2023-07-10Remove StashWithMessage functionStefan Haller
It's identical to Stash(), so use that.
2023-07-10Use -c init.defaultBranch=master to pass the desired main branch to git initStefan Haller
Older versions of git don't support the -b option yet. However, no version of git complains about the -c option, even when the init.defaultBranch config is not supported.
2023-07-10Remove mainBranch parameter from Shell.Init()Stefan Haller
For older git versions we won't be able to support any other main branch than "master", so hard-code that in Init. This doesn't fix anything for older versions yet; see the next commit for that.
2023-07-10Add script to run integration testsStefan Haller
2023-07-10Retry tests on CI (#2769)Jesse Duffield
2023-07-10Retry tests on CIJesse Duffield
Now that we are running each test 6 times on CI, the risk of flakiness is higher. I want to fix these tests for good but it'l take time, so we're just retrying for now
2023-07-10Fix interactive rebase with git 2.25.1 and earlier (#2747)Stefan Haller
2023-07-10Fix interactive rebase with git 2.25.1 and earlierStefan Haller
The code in getHydratedRebasingCommits relied on the assumption that the git-rebase-todo file contains full SHAs. This has only been true from 2.25.2 on, before that it would contain abbreviated SHAs. Fix this by storing fullCommits in a slice instead of a map, and using a linear search.
2023-07-10Updated README.mdREADME-bot
2023-07-10Track busy/idle state for integration tests (#2765)Jesse Duffield
2023-07-10Retry on index.lock errorJesse Duffield
I don't know why we're getting index.lock errors but they're impossile to stop anyway given that other processes can be calling git commands. So we're retrying a few times before re-raising. To do this we need to clone the command and the current implementation for that is best-effort. I do worry about the maintainability of that but we'll see how it goes. Also, I thought you'd need to clone the task (if it exists) but now I think not; as long as you don't call done twice on it you should be fine, and you shouldn't be done'ing a task as part of running a command: that should happen higher up.
2023-07-10Ensure background refreshes don't bunch upJesse Duffield
2023-07-10Fix flakey pull_merge_conflict testJesse Duffield
It's not clear what was happening but it seemed like we sometimes weren't fully writing to our stdout buffer (which is used for the error message) even though we had returned from cmd.Wait(). Not sure what the cause was but removing an unnecessary goroutine fixed it.
2023-07-10Fix flakey misc/initial_open testJesse Duffield
I've simplifiied the code because it was too complex for the current requirements, and this fixed the misc/initial_open test which was occasionally failing due to a race condition around busy tasks
2023-07-10RefactorJesse Duffield
2023-07-10Use an interface for tasks instead of a concrete structJesse Duffield
By using an interface for tasks we can use a fake implementation in tests with extra methods
2023-07-09Use mutex on cached git configJesse Duffield
This fixes a race condition caused by a concurrent map read and write