From 9a3a4862049c464b0fc12dff6a9bfc49e2d8bf03 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 2 Feb 2026 08:17:28 +0100 Subject: pkg/aflow/flow/patching: fix getting list of recent commits We need to run git log in the master git repo b/c out KernelSrc/KernelScratchSrc are shallow checkouts that don't have history. --- pkg/aflow/flow/patching/actions.go | 20 ++++++++++++-------- pkg/aflow/flow/patching/actions_test.go | 9 +++++++-- 2 files changed, 19 insertions(+), 10 deletions(-) (limited to 'pkg/aflow/flow/patching') diff --git a/pkg/aflow/flow/patching/actions.go b/pkg/aflow/flow/patching/actions.go index d42c24fa1..bea70e978 100644 --- a/pkg/aflow/flow/patching/actions.go +++ b/pkg/aflow/flow/patching/actions.go @@ -114,7 +114,6 @@ func maintainers(ctx *aflow.Context, args maintainersArgs) (maintainersResult, e var getRecentCommits = aflow.NewFuncAction("get-recent-commits", recentCommits) type recentCommitsArgs struct { - KernelSrc string KernelCommit string PatchDiff string } @@ -132,11 +131,16 @@ func recentCommits(ctx *aflow.Context, args recentCommitsArgs) (recentCommitsRes if len(files) == 0 { return res, aflow.FlowError(errors.New("patch diff does not contain any modified files")) } - gitArgs := append([]string{"log", "--format=%s", "--no-merges", "-n", "20", args.KernelCommit}, files...) - output, err := osutil.RunCmd(10*time.Minute, args.KernelSrc, "git", gitArgs...) - if err != nil { - return res, aflow.FlowError(fmt.Errorf("%w\n%s", err, output)) - } - res.RecentCommits = string(output) - return res, nil + // We need to run git log in the master git repo b/c out KernelSrc/KernelScratchSrc + // are shallow checkouts that don't have history. + err := kernel.UseLinuxRepo(ctx, func(kernelRepoDir string, _ vcs.Repo) error { + gitArgs := append([]string{"log", "--format=%s", "--no-merges", "-n", "20", args.KernelCommit}, files...) + output, err := osutil.RunCmd(10*time.Minute, kernelRepoDir, "git", gitArgs...) + if err != nil { + return aflow.FlowError(fmt.Errorf("%w\n%s", err, output)) + } + res.RecentCommits = string(output) + return nil + }) + return res, err } diff --git a/pkg/aflow/flow/patching/actions_test.go b/pkg/aflow/flow/patching/actions_test.go index c6f3011e7..c2e18141b 100644 --- a/pkg/aflow/flow/patching/actions_test.go +++ b/pkg/aflow/flow/patching/actions_test.go @@ -9,6 +9,8 @@ import ( "testing" "github.com/google/syzkaller/pkg/aflow" + "github.com/google/syzkaller/pkg/osutil" + "github.com/stretchr/testify/require" ) func TestRecentCommits(t *testing.T) { @@ -17,8 +19,11 @@ func TestRecentCommits(t *testing.T) { if os.Getenv("CI") != "" { t.Skip("skipping on CI because of shallow git checkout") } - aflow.TestAction(t, getRecentCommits, recentCommitsArgs{ - KernelSrc: filepath.FromSlash("../../../.."), + dir := t.TempDir() + require.NoError(t, osutil.MkdirAll(filepath.Join(dir, "repo"))) + require.NoError(t, os.Symlink(osutil.Abs(filepath.FromSlash("../../../..")), + filepath.Join(dir, "repo", "linux"))) + aflow.TestAction(t, getRecentCommits, dir, recentCommitsArgs{ KernelCommit: "e01a0ca6c12c9851ea7090f13879255ef82291e7", PatchDiff: ` diff --git a/dashboard/app/ai.go b/dashboard/app/ai.go -- cgit mrf-deployment