mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Invalidate comments when file is shortened (#11882)
* Invalidate comments when file is shortened Fix #10686 Signed-off-by: Andrew Thornton <art27@cantab.net> * handle 1 line Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		@@ -10,6 +10,7 @@ import (
 | 
				
			|||||||
	"container/list"
 | 
						"container/list"
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"regexp"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/modules/git"
 | 
						"code.gitea.io/gitea/modules/git"
 | 
				
			||||||
@@ -505,10 +506,12 @@ func (c *Comment) LoadReview() error {
 | 
				
			|||||||
	return c.loadReview(x)
 | 
						return c.loadReview(x)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var notEnoughLines = regexp.MustCompile(`fatal: file .* has only \d+ lines?`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *Comment) checkInvalidation(doer *User, repo *git.Repository, branch string) error {
 | 
					func (c *Comment) checkInvalidation(doer *User, repo *git.Repository, branch string) error {
 | 
				
			||||||
	// FIXME differentiate between previous and proposed line
 | 
						// FIXME differentiate between previous and proposed line
 | 
				
			||||||
	commit, err := repo.LineBlame(branch, repo.Path, c.TreePath, uint(c.UnsignedLine()))
 | 
						commit, err := repo.LineBlame(branch, repo.Path, c.TreePath, uint(c.UnsignedLine()))
 | 
				
			||||||
	if err != nil && strings.Contains(err.Error(), "fatal: no such path") {
 | 
						if err != nil && (strings.Contains(err.Error(), "fatal: no such path") || notEnoughLines.MatchString(err.Error())) {
 | 
				
			||||||
		c.Invalidated = true
 | 
							c.Invalidated = true
 | 
				
			||||||
		return UpdateComment(c, doer)
 | 
							return UpdateComment(c, doer)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user