mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Only use --exclude on name-rev with git >= 2.13 (#12347)
Fix #11917 Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		@@ -21,6 +21,7 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/go-git/go-git/v5/plumbing/object"
 | 
						"github.com/go-git/go-git/v5/plumbing/object"
 | 
				
			||||||
 | 
						"github.com/mcuadros/go-version"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Commit represents a git commit.
 | 
					// Commit represents a git commit.
 | 
				
			||||||
@@ -468,7 +469,20 @@ func (c *Commit) GetSubModule(entryname string) (*SubModule, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// GetBranchName gets the closest branch name (as returned by 'git name-rev --name-only')
 | 
					// GetBranchName gets the closest branch name (as returned by 'git name-rev --name-only')
 | 
				
			||||||
func (c *Commit) GetBranchName() (string, error) {
 | 
					func (c *Commit) GetBranchName() (string, error) {
 | 
				
			||||||
	data, err := NewCommand("name-rev", "--exclude", "refs/tags/*", "--name-only", "--no-undefined", c.ID.String()).RunInDir(c.repo.Path)
 | 
						binVersion, err := BinVersion()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return "", fmt.Errorf("Git version missing: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						args := []string{
 | 
				
			||||||
 | 
							"name-rev",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if version.Compare(binVersion, "2.13.0", ">=") {
 | 
				
			||||||
 | 
							args = append(args, "--exclude", "refs/tags/*")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						args = append(args, "--name-only", "--no-undefined", c.ID.String())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						data, err := NewCommand(args...).RunInDir(c.repo.Path)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		// handle special case where git can not describe commit
 | 
							// handle special case where git can not describe commit
 | 
				
			||||||
		if strings.Contains(err.Error(), "cannot describe") {
 | 
							if strings.Contains(err.Error(), "cannot describe") {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user