Skip to content

Commit 24cb221

Browse files
committed
Pass todo flag to EditRebaseTodo
Not used yet, we pass an empty string everywhere, to match the previous behavior. Just extracting this into a separate commit to make the next one smaller.
1 parent 70e3df1 commit 24cb221

File tree

5 files changed

+23
-17
lines changed

5 files changed

+23
-17
lines changed

pkg/app/daemon/daemon.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ func (self *ChangeTodoActionsInstruction) run(common *common.Common) error {
201201
return utils.TodoChange{
202202
Hash: c.Hash,
203203
NewAction: c.NewAction,
204+
NewFlag: c.NewFlag,
204205
}
205206
})
206207

pkg/app/daemon/rebase.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ func TodoLinesToString(todoLines []TodoLine) string {
3737
type ChangeTodoAction struct {
3838
Hash string
3939
NewAction todo.TodoCommand
40+
NewFlag string
4041
}
4142

4243
func handleInteractiveRebase(common *common.Common, f func(path string) error) error {

pkg/commands/git_commands/rebase.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ func (self *RebaseCommands) MoveCommitsUp(commits []*models.Commit, startIdx int
137137
}).Run()
138138
}
139139

140-
func (self *RebaseCommands) InteractiveRebase(commits []*models.Commit, startIdx int, endIdx int, action todo.TodoCommand) error {
140+
func (self *RebaseCommands) InteractiveRebase(commits []*models.Commit, startIdx int, endIdx int, action todo.TodoCommand, flag string) error {
141141
baseIndex := endIdx + 1
142142
if action == todo.Squash || action == todo.Fixup {
143143
baseIndex++
@@ -149,6 +149,7 @@ func (self *RebaseCommands) InteractiveRebase(commits []*models.Commit, startIdx
149149
return daemon.ChangeTodoAction{
150150
Hash: commit.Hash(),
151151
NewAction: action,
152+
NewFlag: flag,
152153
}, !commit.IsMerge()
153154
})
154155

@@ -331,11 +332,12 @@ func todoFromCommit(commit *models.Commit) utils.Todo {
331332
}
332333

333334
// Sets the action for the given commits in the git-rebase-todo file
334-
func (self *RebaseCommands) EditRebaseTodo(commits []*models.Commit, action todo.TodoCommand) error {
335+
func (self *RebaseCommands) EditRebaseTodo(commits []*models.Commit, action todo.TodoCommand, flag string) error {
335336
commitsWithAction := lo.Map(commits, func(commit *models.Commit, _ int) utils.TodoChange {
336337
return utils.TodoChange{
337338
Hash: commit.Hash(),
338339
NewAction: action,
340+
NewFlag: flag,
339341
}
340342
})
341343

pkg/gui/controllers/local_commits_controller.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ func secondaryPatchPanelUpdateOpts(c *ControllerCommon) *types.ViewUpdateOpts {
322322

323323
func (self *LocalCommitsController) squashDown(selectedCommits []*models.Commit, startIdx int, endIdx int) error {
324324
if self.isRebasing() {
325-
return self.updateTodos(todo.Squash, selectedCommits)
325+
return self.updateTodos(todo.Squash, "", selectedCommits)
326326
}
327327

328328
self.c.Confirm(types.ConfirmOpts{
@@ -331,7 +331,7 @@ func (self *LocalCommitsController) squashDown(selectedCommits []*models.Commit,
331331
HandleConfirm: func() error {
332332
return self.c.WithWaitingStatus(self.c.Tr.SquashingStatus, func(gocui.Task) error {
333333
self.c.LogAction(self.c.Tr.Actions.SquashCommitDown)
334-
return self.interactiveRebase(todo.Squash, startIdx, endIdx)
334+
return self.interactiveRebase(todo.Squash, "", startIdx, endIdx)
335335
})
336336
},
337337
})
@@ -341,7 +341,7 @@ func (self *LocalCommitsController) squashDown(selectedCommits []*models.Commit,
341341

342342
func (self *LocalCommitsController) fixup(selectedCommits []*models.Commit, startIdx int, endIdx int) error {
343343
if self.isRebasing() {
344-
return self.updateTodos(todo.Fixup, selectedCommits)
344+
return self.updateTodos(todo.Fixup, "", selectedCommits)
345345
}
346346

347347
self.c.Confirm(types.ConfirmOpts{
@@ -350,7 +350,7 @@ func (self *LocalCommitsController) fixup(selectedCommits []*models.Commit, star
350350
HandleConfirm: func() error {
351351
return self.c.WithWaitingStatus(self.c.Tr.FixingStatus, func(gocui.Task) error {
352352
self.c.LogAction(self.c.Tr.Actions.FixupCommit)
353-
return self.interactiveRebase(todo.Fixup, startIdx, endIdx)
353+
return self.interactiveRebase(todo.Fixup, "", startIdx, endIdx)
354354
})
355355
},
356356
})
@@ -485,14 +485,14 @@ func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, start
485485

486486
self.context().SetSelectionRangeAndMode(selectedIdx, rangeStartIdx, rangeSelectMode)
487487

488-
return self.updateTodos(todo.Drop, nonUpdateRefTodos)
488+
return self.updateTodos(todo.Drop, "", nonUpdateRefTodos)
489489
},
490490
})
491491

492492
return nil
493493
}
494494

495-
return self.updateTodos(todo.Drop, selectedCommits)
495+
return self.updateTodos(todo.Drop, "", selectedCommits)
496496
}
497497

498498
isMerge := selectedCommits[0].IsMerge()
@@ -506,7 +506,7 @@ func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, start
506506
if isMerge {
507507
return self.dropMergeCommit(startIdx)
508508
}
509-
return self.interactiveRebase(todo.Drop, startIdx, endIdx)
509+
return self.interactiveRebase(todo.Drop, "", startIdx, endIdx)
510510
})
511511
},
512512
})
@@ -521,13 +521,13 @@ func (self *LocalCommitsController) dropMergeCommit(commitIdx int) error {
521521

522522
func (self *LocalCommitsController) edit(selectedCommits []*models.Commit, startIdx int, endIdx int) error {
523523
if self.isRebasing() {
524-
return self.updateTodos(todo.Edit, selectedCommits)
524+
return self.updateTodos(todo.Edit, "", selectedCommits)
525525
}
526526

527527
commits := self.c.Model().Commits
528528
if !commits[endIdx].IsMerge() {
529529
selectionRangeAndMode := self.getSelectionRangeAndMode()
530-
err := self.c.Git().Rebase.InteractiveRebase(commits, startIdx, endIdx, todo.Edit)
530+
err := self.c.Git().Rebase.InteractiveRebase(commits, startIdx, endIdx, todo.Edit, "")
531531
return self.c.Helpers().MergeAndRebase.CheckMergeOrRebaseWithRefreshOptions(
532532
err,
533533
types.RefreshOptions{
@@ -568,7 +568,7 @@ func (self *LocalCommitsController) startInteractiveRebaseWithEdit(
568568
}
569569
}
570570
if len(todos) > 0 {
571-
err := self.updateTodos(todo.Edit, todos)
571+
err := self.updateTodos(todo.Edit, "", todos)
572572
if err != nil {
573573
return err
574574
}
@@ -628,31 +628,31 @@ func (self *LocalCommitsController) findCommitForQuickStartInteractiveRebase() (
628628

629629
func (self *LocalCommitsController) pick(selectedCommits []*models.Commit) error {
630630
if self.isRebasing() {
631-
return self.updateTodos(todo.Pick, selectedCommits)
631+
return self.updateTodos(todo.Pick, "", selectedCommits)
632632
}
633633

634634
// at this point we aren't actually rebasing so we will interpret this as an
635635
// attempt to pull. We might revoke this later after enabling configurable keybindings
636636
return self.pullFiles()
637637
}
638638

639-
func (self *LocalCommitsController) interactiveRebase(action todo.TodoCommand, startIdx int, endIdx int) error {
639+
func (self *LocalCommitsController) interactiveRebase(action todo.TodoCommand, flag string, startIdx int, endIdx int) error {
640640
// When performing an action that will remove the selected commits, we need to select the
641641
// next commit down (which will end up at the start index after the action is performed)
642642
if action == todo.Drop || action == todo.Fixup || action == todo.Squash {
643643
self.context().SetSelection(startIdx)
644644
}
645645

646-
err := self.c.Git().Rebase.InteractiveRebase(self.c.Model().Commits, startIdx, endIdx, action)
646+
err := self.c.Git().Rebase.InteractiveRebase(self.c.Model().Commits, startIdx, endIdx, action, flag)
647647

648648
return self.c.Helpers().MergeAndRebase.CheckMergeOrRebase(err)
649649
}
650650

651651
// updateTodos sees if the selected commit is in fact a rebasing
652652
// commit meaning you are trying to edit the todo file rather than actually
653653
// begin a rebase. It then updates the todo file with that action
654-
func (self *LocalCommitsController) updateTodos(action todo.TodoCommand, selectedCommits []*models.Commit) error {
655-
if err := self.c.Git().Rebase.EditRebaseTodo(selectedCommits, action); err != nil {
654+
func (self *LocalCommitsController) updateTodos(action todo.TodoCommand, flag string, selectedCommits []*models.Commit) error {
655+
if err := self.c.Git().Rebase.EditRebaseTodo(selectedCommits, action, flag); err != nil {
656656
return err
657657
}
658658

pkg/utils/rebase_todo.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type Todo struct {
1919
type TodoChange struct {
2020
Hash string
2121
NewAction todo.TodoCommand
22+
NewFlag string
2223
}
2324

2425
// Read a git-rebase-todo file, change the actions for the given commits,
@@ -37,6 +38,7 @@ func EditRebaseTodo(filePath string, changes []TodoChange, commentChar byte) err
3738
if equalHash(t.Commit, change.Hash) {
3839
matchCount++
3940
t.Command = change.NewAction
41+
t.Flag = change.NewFlag
4042
}
4143
}
4244
}

0 commit comments

Comments
 (0)