Skip to content

Commit 4725a88

Browse files
committed
Don't display error log when .git-blame-ignore-revs doesn't exist
1 parent a0595ad commit 4725a88

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

modules/git/blame.go

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func (r *BlameReader) Close() error {
132132
}
133133

134134
// CreateBlameReader creates reader for given repository, commit and file
135-
func CreateBlameReader(ctx context.Context, objectFormat ObjectFormat, repoPath string, commit *Commit, file string, bypassBlameIgnore bool) (*BlameReader, error) {
135+
func CreateBlameReader(ctx context.Context, objectFormat ObjectFormat, repoPath string, commit *Commit, file string, bypassBlameIgnore bool) (rd *BlameReader, err error) {
136136
reader, stdout, err := os.Pipe()
137137
if err != nil {
138138
return nil, err
@@ -141,9 +141,18 @@ func CreateBlameReader(ctx context.Context, objectFormat ObjectFormat, repoPath
141141
cmd := NewCommandNoGlobals("blame", "--porcelain")
142142

143143
var ignoreRevsFileName string
144-
var ignoreRevsFileCleanup func() // TODO: maybe it should check the returned err in a defer func to make sure the cleanup could always be executed correctly
144+
var ignoreRevsFileCleanup func()
145+
defer func() {
146+
if err != nil && ignoreRevsFileCleanup != nil {
147+
ignoreRevsFileCleanup()
148+
}
149+
}()
150+
145151
if DefaultFeatures().CheckVersionAtLeast("2.23") && !bypassBlameIgnore {
146-
ignoreRevsFileName, ignoreRevsFileCleanup = tryCreateBlameIgnoreRevsFile(commit)
152+
ignoreRevsFileName, ignoreRevsFileCleanup, err = tryCreateBlameIgnoreRevsFile(commit)
153+
if err != nil {
154+
return nil, err
155+
}
147156
if ignoreRevsFileName != "" {
148157
// Possible improvement: use --ignore-revs-file /dev/stdin on unix
149158
// There is no equivalent on Windows. May be implemented if Gitea uses an external git backend.
@@ -182,33 +191,32 @@ func CreateBlameReader(ctx context.Context, objectFormat ObjectFormat, repoPath
182191
}, nil
183192
}
184193

185-
func tryCreateBlameIgnoreRevsFile(commit *Commit) (string, func()) {
194+
func tryCreateBlameIgnoreRevsFile(commit *Commit) (string, func(), error) {
186195
entry, err := commit.GetTreeEntryByPath(".git-blame-ignore-revs")
187196
if err != nil {
188-
log.Error("Unable to get .git-blame-ignore-revs file: GetTreeEntryByPath: %v", err)
189-
return "", nil
197+
if IsErrNotExist(err) {
198+
return "", nil, nil
199+
}
200+
return "", nil, err
190201
}
191202

192203
r, err := entry.Blob().DataAsync()
193204
if err != nil {
194-
log.Error("Unable to get .git-blame-ignore-revs file data: DataAsync: %v", err)
195-
return "", nil
205+
return "", nil, err
196206
}
197207
defer r.Close()
198208

199209
f, cleanup, err := setting.AppDataTempDir("git-repo-content").CreateTempFileRandom("git-blame-ignore-revs")
200210
if err != nil {
201-
log.Error("Unable to get .git-blame-ignore-revs file data: CreateTempFileRandom: %v", err)
202-
return "", nil
211+
return "", nil, err
203212
}
204213
filename := f.Name()
205214
_, err = io.Copy(f, r)
206215
_ = f.Close()
207216
if err != nil {
208217
cleanup()
209-
log.Error("Unable to get .git-blame-ignore-revs file data: Copy: %v", err)
210-
return "", nil
218+
return "", nil, err
211219
}
212220

213-
return filename, cleanup
221+
return filename, cleanup, nil
214222
}

0 commit comments

Comments
 (0)