mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 02:04:11 +01:00 
			
		
		
		
	render plain text file if the LFS object doesn't exist (#31812)
We had an issue where a repo was using LFS to store a file, but the user did not push the file. When trying to view the file, Gitea returned a 500 HTTP status code referencing `ErrLFSObjectNotExist`. It appears the intent was the render this file as plain text, but the conditional was flipped. I've also added a test to verify that the file is rendered as plain text.
This commit is contained in:
		
							parent
							
								
									7569a470fb
								
							
						
					
					
						commit
						1310649331
					
				@ -234,14 +234,12 @@ func getFileReader(ctx gocontext.Context, repoID int64, blob *git.Blob) ([]byte,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	meta, err := git_model.GetLFSMetaObjectByOid(ctx, repoID, pointer.Oid)
 | 
			
		||||
	if err != nil && err != git_model.ErrLFSObjectNotExist { // fallback to plain file
 | 
			
		||||
	if err != nil { // fallback to plain file
 | 
			
		||||
		log.Warn("Unable to access LFS pointer %s in repo %d: %v", pointer.Oid, repoID, err)
 | 
			
		||||
		return buf, dataRc, &fileInfo{isTextFile, false, blob.Size(), nil, st}, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dataRc.Close()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, nil, nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dataRc, err = lfs.ReadMetaObject(pointer)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,2 @@
 | 
			
		||||
xKÊÉOR0´0`pö÷	òt
 | 
			
		||||
ñôs×ËMQHËÌ)I-²ÍI+VHÉLK3rS‹ÒSÁ,Ý’ÔŠ.-½¬‚t"U&eæ¥23¯,1'“8ûØæAÅ
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							@ -1 +1 @@
 | 
			
		||||
73cf03db6ece34e12bf91e8853dc58f678f2f82d
 | 
			
		||||
e9c32647bab825977942598c0efa415de300304b
 | 
			
		||||
 | 
			
		||||
@ -89,6 +89,19 @@ func TestLFSRender(t *testing.T) {
 | 
			
		||||
		content := doc.Find("div.file-view").Text()
 | 
			
		||||
		assert.Contains(t, content, "Testing READMEs in LFS")
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	// check that an invalid lfs entry defaults to plaintext
 | 
			
		||||
	t.Run("Invalid", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", "/user2/lfs/src/branch/master/invalid")
 | 
			
		||||
		resp := session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		doc := NewHTMLParser(t, resp.Body).doc
 | 
			
		||||
 | 
			
		||||
		content := doc.Find("div.file-view").Text()
 | 
			
		||||
		assert.Contains(t, content, "oid sha256:9d178b5f15046343fd32f451df93acc2bdd9e6373be478b968e4cad6b6647351")
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TestLFSLockView tests the LFS lock view on settings page of repositories
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user