mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Fix gogit GetRefCommitID (#32705)
				
					
				
			This commit is contained in:
		| @@ -14,9 +14,16 @@ import ( | ||||
| 	"github.com/go-git/go-git/v5/plumbing/object" | ||||
| ) | ||||
|  | ||||
| // GetRefCommitID returns the last commit ID string of given reference (branch or tag). | ||||
| // GetRefCommitID returns the last commit ID string of given reference. | ||||
| func (repo *Repository) GetRefCommitID(name string) (string, error) { | ||||
| 	ref, err := repo.gogitRepo.Reference(plumbing.ReferenceName(name), true) | ||||
| 	if plumbing.IsHash(name) { | ||||
| 		return name, nil | ||||
| 	} | ||||
| 	refName := plumbing.ReferenceName(name) | ||||
| 	if err := refName.Validate(); err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	ref, err := repo.gogitRepo.Reference(refName, true) | ||||
| 	if err != nil { | ||||
| 		if err == plumbing.ErrReferenceNotFound { | ||||
| 			return "", ErrNotExist{ | ||||
|   | ||||
| @@ -101,3 +101,28 @@ func TestRepository_CommitsBetweenIDs(t *testing.T) { | ||||
| 		assert.Len(t, commits, c.ExpectedCommits, "case %d", i) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestGetRefCommitID(t *testing.T) { | ||||
| 	bareRepo1Path := filepath.Join(testReposDir, "repo1_bare") | ||||
| 	bareRepo1, err := openRepositoryWithDefaultContext(bareRepo1Path) | ||||
| 	assert.NoError(t, err) | ||||
| 	defer bareRepo1.Close() | ||||
|  | ||||
| 	// these test case are specific to the repo1_bare test repo | ||||
| 	testCases := []struct { | ||||
| 		Ref              string | ||||
| 		ExpectedCommitID string | ||||
| 	}{ | ||||
| 		{RefNameFromBranch("master").String(), "ce064814f4a0d337b333e646ece456cd39fab612"}, | ||||
| 		{RefNameFromBranch("branch1").String(), "2839944139e0de9737a044f78b0e4b40d989a9e3"}, | ||||
| 		{RefNameFromTag("test").String(), "3ad28a9149a2864384548f3d17ed7f38014c9e8a"}, | ||||
| 		{"ce064814f4a0d337b333e646ece456cd39fab612", "ce064814f4a0d337b333e646ece456cd39fab612"}, | ||||
| 	} | ||||
|  | ||||
| 	for _, testCase := range testCases { | ||||
| 		commitID, err := bareRepo1.GetRefCommitID(testCase.Ref) | ||||
| 		if assert.NoError(t, err) { | ||||
| 			assert.Equal(t, testCase.ExpectedCommitID, commitID) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user