diff --git a/app/models/git_repository.rb b/app/models/git_repository.rb index dfd8c96ea9..b8a3377669 100644 --- a/app/models/git_repository.rb +++ b/app/models/git_repository.rb @@ -93,7 +93,7 @@ def update_mirror # clear worktrees that are deleted def prune_worktree - executor.execute("cd #{repo_cache_dir}", "git worktree prune") + capture_stdout "git", "worktree", "prune", dir: repo_cache_dir end private diff --git a/test/models/git_repository_test.rb b/test/models/git_repository_test.rb index 6b96c333c6..f68046566e 100644 --- a/test/models/git_repository_test.rb +++ b/test/models/git_repository_test.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require_relative '../test_helper' -SingleCov.covered! uncovered: 7 +SingleCov.covered! uncovered: 6 describe GitRepository do include GitRepoTestHelper @@ -353,4 +353,16 @@ def call call.must_equal callsite end end + + describe "#prune_worktree" do + it "silently prunes" do + create_repo_without_tags + Dir.mktmpdir do |dir| + repository.checkout_workspace dir, 'master' + end + repository.prune_worktree + `cd #{repository.repo_cache_dir} && git worktree list`.split("\n").size.must_equal 1 + repository.executor.output.string.wont_include "prune" + end + end end