mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-30 23:57:43 +02:00 
			
		
		
		
	Allow amending the head commit during interactive rebase
This commit is contained in:
		
				
					committed by
					
						 Stefan Haller
						Stefan Haller
					
				
			
			
				
	
			
			
			
						parent
						
							85fdb700ba
						
					
				
				
					commit
					e7d0116312
				
			| @@ -445,6 +445,13 @@ func (self *LocalCommitsController) moveUp(commit *models.Commit) error { | ||||
| } | ||||
|  | ||||
| func (self *LocalCommitsController) amendTo(commit *models.Commit) error { | ||||
| 	if self.isHeadCommit() { | ||||
| 		if err := self.helpers.AmendHelper.AmendHead(); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) | ||||
| 	} | ||||
|  | ||||
| 	return self.c.Confirm(types.ConfirmOpts{ | ||||
| 		Title:  self.c.Tr.AmendCommitTitle, | ||||
| 		Prompt: self.c.Tr.AmendCommitPrompt, | ||||
|   | ||||
| @@ -0,0 +1,59 @@ | ||||
| package interactive_rebase | ||||
|  | ||||
| import ( | ||||
| 	"github.com/jesseduffield/lazygit/pkg/config" | ||||
| 	. "github.com/jesseduffield/lazygit/pkg/integration/components" | ||||
| ) | ||||
|  | ||||
| var AmendHeadCommitDuringRebase = NewIntegrationTest(NewIntegrationTestArgs{ | ||||
| 	Description:  "Amends the current head commit from the commits panel during a rebase.", | ||||
| 	ExtraCmdArgs: "", | ||||
| 	Skip:         false, | ||||
| 	SetupConfig:  func(config *config.AppConfig) {}, | ||||
| 	SetupRepo: func(shell *Shell) { | ||||
| 		shell.CreateNCommits(3) | ||||
| 	}, | ||||
| 	Run: func(t *TestDriver, keys config.KeybindingConfig) { | ||||
| 		t.Views().Commits(). | ||||
| 			Focus(). | ||||
| 			Lines( | ||||
| 				Contains("commit 03"), | ||||
| 				Contains("commit 02"), | ||||
| 				Contains("commit 01"), | ||||
| 			). | ||||
| 			NavigateToLine(Contains("commit 02")). | ||||
| 			Press(keys.Universal.Edit). | ||||
| 			Lines( | ||||
| 				Contains("commit 03"), | ||||
| 				Contains("<-- YOU ARE HERE --- commit 02").IsSelected(), | ||||
| 				Contains("commit 01"), | ||||
| 			) | ||||
|  | ||||
| 		t.Shell().CreateFile("fixup-file", "fixup content") | ||||
| 		t.Views().Files(). | ||||
| 			Focus(). | ||||
| 			Press(keys.Files.RefreshFiles). | ||||
| 			Lines( | ||||
| 				Contains("??").Contains("fixup-file").IsSelected(), | ||||
| 			). | ||||
| 			PressPrimaryAction() | ||||
|  | ||||
| 		t.Views().Commits(). | ||||
| 			Focus(). | ||||
| 			Press(keys.Commits.AmendToCommit). | ||||
| 			Tap(func() { | ||||
| 				t.ExpectPopup().Confirmation(). | ||||
| 					Title(Equals("Amend Last Commit")). | ||||
| 					Content(Contains("Are you sure you want to amend last commit?")). | ||||
| 					Confirm() | ||||
| 			}). | ||||
| 			Lines( | ||||
| 				Contains("commit 03"), | ||||
| 				Contains("<-- YOU ARE HERE --- commit 02").IsSelected(), | ||||
| 				Contains("commit 01"), | ||||
| 			) | ||||
|  | ||||
| 		t.Views().Main(). | ||||
| 			Content(Contains("fixup content")) | ||||
| 	}, | ||||
| }) | ||||
| @@ -42,8 +42,8 @@ var AmendMerge = NewIntegrationTest(NewIntegrationTestArgs{ | ||||
| 			Press(keys.Commits.AmendToCommit) | ||||
|  | ||||
| 		t.ExpectPopup().Confirmation(). | ||||
| 			Title(Equals("Amend Commit")). | ||||
| 			Content(Contains("Are you sure you want to amend this commit with your staged files?")). | ||||
| 			Title(Equals("Amend Last Commit")). | ||||
| 			Content(Contains("Are you sure you want to amend last commit?")). | ||||
| 			Confirm() | ||||
|  | ||||
| 		// assuring we haven't added a brand new commit | ||||
|   | ||||
| @@ -82,6 +82,7 @@ var tests = []*components.IntegrationTest{ | ||||
| 	filter_by_path.SelectFile, | ||||
| 	filter_by_path.TypeFile, | ||||
| 	interactive_rebase.AmendFirstCommit, | ||||
| 	interactive_rebase.AmendHeadCommitDuringRebase, | ||||
| 	interactive_rebase.AmendMerge, | ||||
| 	interactive_rebase.EditFirstCommit, | ||||
| 	interactive_rebase.EditNonTodoCommitDuringRebase, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user