mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-30 23:57:43 +02:00 
			
		
		
		
	Use --force instead of --force-with-lease when remote is not stored locally
--force-with-lease simply doesn't work in this case, it will always return a "stale info" error.
This commit is contained in:
		| @@ -18,6 +18,7 @@ func NewSyncCommands(gitCommon *GitCommon) *SyncCommands { | ||||
|  | ||||
| // Push pushes to a branch | ||||
| type PushOpts struct { | ||||
| 	Force          bool | ||||
| 	ForceWithLease bool | ||||
| 	UpstreamRemote string | ||||
| 	UpstreamBranch string | ||||
| @@ -30,6 +31,7 @@ func (self *SyncCommands) PushCmdObj(task gocui.Task, opts PushOpts) (oscommands | ||||
| 	} | ||||
|  | ||||
| 	cmdArgs := NewGitCmd("push"). | ||||
| 		ArgIf(opts.Force, "--force"). | ||||
| 		ArgIf(opts.ForceWithLease, "--force-with-lease"). | ||||
| 		ArgIf(opts.SetUpstream, "--set-upstream"). | ||||
| 		ArgIf(opts.UpstreamRemote != "", opts.UpstreamRemote). | ||||
|   | ||||
| @@ -32,6 +32,14 @@ func TestSyncPush(t *testing.T) { | ||||
| 				assert.NoError(t, err) | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			testName: "Push with force enabled", | ||||
| 			opts:     PushOpts{Force: true}, | ||||
| 			test: func(cmdObj oscommands.ICmdObj, err error) { | ||||
| 				assert.Equal(t, cmdObj.Args(), []string{"git", "push", "--force"}) | ||||
| 				assert.NoError(t, err) | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			testName: "Push with force disabled, upstream supplied", | ||||
| 			opts: PushOpts{ | ||||
|   | ||||
| @@ -179,6 +179,7 @@ func (self *SyncController) pullWithLock(task gocui.Task, opts PullFilesOptions) | ||||
| } | ||||
|  | ||||
| type pushOpts struct { | ||||
| 	force          bool | ||||
| 	forceWithLease bool | ||||
| 	upstreamRemote string | ||||
| 	upstreamBranch string | ||||
| @@ -197,13 +198,14 @@ func (self *SyncController) pushAux(currentBranch *models.Branch, opts pushOpts) | ||||
| 		err := self.c.Git().Sync.Push( | ||||
| 			task, | ||||
| 			git_commands.PushOpts{ | ||||
| 				Force:          opts.force, | ||||
| 				ForceWithLease: opts.forceWithLease, | ||||
| 				UpstreamRemote: opts.upstreamRemote, | ||||
| 				UpstreamBranch: opts.upstreamBranch, | ||||
| 				SetUpstream:    opts.setUpstream, | ||||
| 			}) | ||||
| 		if err != nil { | ||||
| 			if !opts.forceWithLease && strings.Contains(err.Error(), "Updates were rejected") { | ||||
| 			if !opts.force && !opts.forceWithLease && strings.Contains(err.Error(), "Updates were rejected") { | ||||
| 				if opts.remoteBranchStoredLocally { | ||||
| 					return errors.New(self.c.Tr.UpdatesRejected) | ||||
| 				} | ||||
| @@ -217,7 +219,7 @@ func (self *SyncController) pushAux(currentBranch *models.Branch, opts pushOpts) | ||||
| 					Prompt: self.forcePushPrompt(), | ||||
| 					HandleConfirm: func() error { | ||||
| 						newOpts := opts | ||||
| 						newOpts.forceWithLease = true | ||||
| 						newOpts.force = true | ||||
|  | ||||
| 						return self.pushAux(currentBranch, newOpts) | ||||
| 					}, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user