mirror of
				https://gitea.com/gitea/tea.git
				synced 2025-10-31 01:05:26 +01:00 
			
		
		
		
	make PR workflow helpers more robust (#300)
improve handling of remote deleted branches split git.TeaDeleteBranch only delete remote branch if we have permission add missing err check Co-authored-by: Norwin Roosen <git@nroo.de> Reviewed-on: https://gitea.com/gitea/tea/pulls/300 Reviewed-by: 6543 <6543@obermui.de> Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Co-Authored-By: Norwin <noerw@noreply.gitea.io> Co-Committed-By: Norwin <noerw@noreply.gitea.io>
This commit is contained in:
		| @@ -47,33 +47,28 @@ func (r TeaRepo) TeaCheckout(branchName string) error { | ||||
| 	return tree.Checkout(&git.CheckoutOptions{Branch: localBranchRefName}) | ||||
| } | ||||
|  | ||||
| // TeaDeleteBranch removes the given branch locally, and if `remoteBranch` is | ||||
| // not empty deletes it at it's remote repo. | ||||
| func (r TeaRepo) TeaDeleteBranch(branch *git_config.Branch, remoteBranch string, auth git_transport.AuthMethod) error { | ||||
| // TeaDeleteLocalBranch removes the given branch locally | ||||
| func (r TeaRepo) TeaDeleteLocalBranch(branch *git_config.Branch) error { | ||||
| 	err := r.DeleteBranch(branch.Name) | ||||
| 	// if the branch is not found that's ok, as .git/config may have no entry if | ||||
| 	// no remote tracking branch is configured for it (eg push without -u flag) | ||||
| 	if err != nil && err.Error() != "branch not found" { | ||||
| 		return err | ||||
| 	} | ||||
| 	err = r.Storer.RemoveReference(git_plumbing.NewBranchReferenceName(branch.Name)) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	return r.Storer.RemoveReference(git_plumbing.NewBranchReferenceName(branch.Name)) | ||||
| } | ||||
|  | ||||
| 	if remoteBranch != "" { | ||||
| 		// delete remote branch via git protocol: | ||||
| 		// an empty source in the refspec means remote deletion to git 🙃 | ||||
| 		refspec := fmt.Sprintf(":%s", git_plumbing.NewBranchReferenceName(remoteBranch)) | ||||
| 		err = r.Push(&git.PushOptions{ | ||||
| 			RemoteName: branch.Remote, | ||||
| 			RefSpecs:   []git_config.RefSpec{git_config.RefSpec(refspec)}, | ||||
| 			Prune:      true, | ||||
| 			Auth:       auth, | ||||
| 		}) | ||||
| 	} | ||||
|  | ||||
| 	return err | ||||
| // TeaDeleteRemoteBranch removes the given branch on the given remote via git protocol | ||||
| func (r TeaRepo) TeaDeleteRemoteBranch(remoteName, remoteBranch string, auth git_transport.AuthMethod) error { | ||||
| 	// delete remote branch via git protocol: | ||||
| 	// an empty source in the refspec means remote deletion to git 🙃 | ||||
| 	refspec := fmt.Sprintf(":%s", git_plumbing.NewBranchReferenceName(remoteBranch)) | ||||
| 	return r.Push(&git.PushOptions{ | ||||
| 		RemoteName: remoteName, | ||||
| 		RefSpecs:   []git_config.RefSpec{git_config.RefSpec(refspec)}, | ||||
| 		Prune:      true, | ||||
| 		Auth:       auth, | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| // TeaFindBranchBySha returns a branch that is at the the given SHA and syncs to the | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Norwin
					Norwin