mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-05-11 12:25:47 +02:00
Commit only tracked files in tracked only filter view
This commit is contained in:
parent
220f06052a
commit
7a1b63182d
6 changed files with 73 additions and 6 deletions
|
@ -34,11 +34,15 @@ func (self *WorkingTreeCommands) OpenMergeToolCmdObj() oscommands.ICmdObj {
|
|||
|
||||
// StageFile stages a file
|
||||
func (self *WorkingTreeCommands) StageFile(path string) error {
|
||||
return self.StageFiles([]string{path})
|
||||
return self.StageFiles([]string{path}, nil)
|
||||
}
|
||||
|
||||
func (self *WorkingTreeCommands) StageFiles(paths []string) error {
|
||||
cmdArgs := NewGitCmd("add").Arg("--").Arg(paths...).ToArgv()
|
||||
func (self *WorkingTreeCommands) StageFiles(paths []string, extraArgs []string) error {
|
||||
cmdArgs := NewGitCmd("add").
|
||||
Arg(extraArgs...).
|
||||
Arg("--").
|
||||
Arg(paths...).
|
||||
ToArgv()
|
||||
|
||||
return self.cmd.New(cmdArgs).Run()
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ func TestWorkingTreeStageFiles(t *testing.T) {
|
|||
|
||||
instance := buildWorkingTreeCommands(commonDeps{runner: runner})
|
||||
|
||||
assert.NoError(t, instance.StageFiles([]string{"test.txt", "test2.txt"}))
|
||||
assert.NoError(t, instance.StageFiles([]string{"test.txt", "test2.txt"}, nil))
|
||||
runner.CheckForMissingCalls()
|
||||
}
|
||||
|
||||
|
|
|
@ -421,13 +421,19 @@ func (self *FilesController) pressWithLock(selectedNodes []*filetree.FileNode) e
|
|||
unstagedSelectedNodes := filterNodesHaveUnstagedChanges(selectedNodes)
|
||||
|
||||
if len(unstagedSelectedNodes) > 0 {
|
||||
var extraArgs []string
|
||||
|
||||
if self.context().GetFilter() == filetree.DisplayTracked {
|
||||
extraArgs = []string{"-u"}
|
||||
}
|
||||
|
||||
self.c.LogAction(self.c.Tr.Actions.StageFile)
|
||||
|
||||
if err := self.optimisticChange(unstagedSelectedNodes, self.optimisticStage); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := self.c.Git().WorkingTree.StageFiles(toPaths(unstagedSelectedNodes)); err != nil {
|
||||
if err := self.c.Git().WorkingTree.StageFiles(toPaths(unstagedSelectedNodes), extraArgs); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -565,7 +565,7 @@ func (self *RefreshHelper) refreshStateFiles() error {
|
|||
|
||||
if len(pathsToStage) > 0 {
|
||||
self.c.LogAction(self.c.Tr.Actions.StageResolvedFiles)
|
||||
if err := self.c.Git().WorkingTree.StageFiles(pathsToStage); err != nil {
|
||||
if err := self.c.Git().WorkingTree.StageFiles(pathsToStage, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
package filter_and_search
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/config"
|
||||
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||
)
|
||||
|
||||
var StagingFolderStagesOnlyTrackedFilesInTrackedOnlyFilter = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Staging entire folder in tracked only view, should stage only tracked files",
|
||||
ExtraCmdArgs: []string{},
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {
|
||||
},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shell.CreateDir("test")
|
||||
shell.CreateFileAndAdd("test/file-tracked", "foo")
|
||||
|
||||
shell.Commit("first commit")
|
||||
|
||||
shell.CreateFile("test/file-untracked", "bar")
|
||||
shell.UpdateFile("test/file-tracked", "baz")
|
||||
},
|
||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||
t.Views().Files().
|
||||
Focus().
|
||||
Lines(
|
||||
Equals("▼ test").IsSelected(),
|
||||
Equals(" M file-tracked"),
|
||||
Equals(" ?? file-untracked"),
|
||||
).
|
||||
Press(keys.Files.OpenStatusFilter).
|
||||
Tap(func() {
|
||||
t.ExpectPopup().Menu().
|
||||
Title(Equals("Filtering")).
|
||||
Select(Contains("Show only tracked files")).
|
||||
Confirm()
|
||||
}).
|
||||
Lines(
|
||||
Equals("▼ test").IsSelected(),
|
||||
Equals(" M file-tracked"),
|
||||
).
|
||||
PressPrimaryAction().
|
||||
Press(keys.Files.OpenStatusFilter).
|
||||
Tap(func() {
|
||||
t.ExpectPopup().Menu().
|
||||
Title(Equals("Filtering")).
|
||||
Select(Contains("No filter")).
|
||||
Confirm()
|
||||
}).
|
||||
Lines(
|
||||
Equals("▼ test").IsSelected(),
|
||||
Equals(" M file-tracked"), // 'M' is now in the left column, so file is staged
|
||||
Equals(" ?? file-untracked"),
|
||||
)
|
||||
},
|
||||
})
|
|
@ -207,6 +207,7 @@ var tests = []*components.IntegrationTest{
|
|||
filter_and_search.NestedFilter,
|
||||
filter_and_search.NestedFilterTransient,
|
||||
filter_and_search.NewSearch,
|
||||
filter_and_search.StagingFolderStagesOnlyTrackedFilesInTrackedOnlyFilter,
|
||||
filter_by_author.SelectAuthor,
|
||||
filter_by_author.TypeAuthor,
|
||||
filter_by_path.CliArg,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue