From f8c9e7fff564667700c3dbc239d55db8fcd032a6 Mon Sep 17 00:00:00 2001 From: Koni Marti Date: Fri, 24 Nov 2023 16:03:10 +0100 Subject: patch: implement worktree support Implement worktree support for the patch management. Use ":patch apply -w " to create a new worktree and apply the selected messages to it. The worktree is linked to repo in the current project. Internally, the worktree is stored as a new project. When this project is deleted with ":patch delete", the underlying linked worktree is removed as well. ":patch list" shows when a project is a worktree and to what project it is linked to. Worktrees enable the users to create a new copy of the repo at a given commit and apply patches without interrupting the current work in the base repo. Signed-off-by: Koni Marti Acked-by: Robin Jarry --- lib/pama/pama_test.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib/pama/pama_test.go') diff --git a/lib/pama/pama_test.go b/lib/pama/pama_test.go index 7a4d1961..98258249 100644 --- a/lib/pama/pama_test.go +++ b/lib/pama/pama_test.go @@ -113,6 +113,14 @@ func (c *mockRevctrl) Remove(commit string) error { return errNotFound } +func (c *mockRevctrl) CreateWorktree(_, _ string) error { + return nil +} + +func (c *mockRevctrl) DeleteWorktree(_ string) error { + return nil +} + func (c *mockRevctrl) ApplyCmd() string { return "" } @@ -157,6 +165,10 @@ func (s *mockStore) Names() ([]string, error) { return names, nil } +func (s *mockStore) Project(_ string) (models.Project, error) { + return models.Project{}, nil +} + func (s *mockStore) Projects() ([]models.Project, error) { var ps []models.Project for _, p := range s.data { -- cgit