gitech
1// Copyright 2017 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4package git
5
6import (
7"fmt"
8)
9
10// LineBlame returns the latest commit at the given line
11func (repo *Repository) LineBlame(revision, path, file string, line uint) (*Commit, error) {
12res, _, err := NewCommand(repo.Ctx, "blame").
13AddOptionFormat("-L %d,%d", line, line).
14AddOptionValues("-p", revision).
15AddDashesAndList(file).RunStdString(&RunOpts{Dir: path})
16if err != nil {
17return nil, err
18}
19if len(res) < 40 {
20return nil, fmt.Errorf("invalid result of blame: %s", res)
21}
22return repo.GetCommit(res[:40])
23}
24