removeAgentWorktree method
Remove a worktree created by createAgentWorktree.
Implementation
Future<bool> removeAgentWorktree(
String worktreePath, {
String? worktreeBranch,
String? gitRoot,
bool hookBased = false,
}) async {
if (hookBased) {
if (onExecuteWorktreeRemoveHook != null) {
final hookRan = await onExecuteWorktreeRemoveHook!(worktreePath);
if (hookRan) {
_logForDebugging(
'Removed hook-based agent worktree at: $worktreePath',
);
}
return hookRan;
}
return false;
}
if (gitRoot == null) {
_logForDebugging(
'Cannot remove agent worktree: no git root provided',
level: 'error',
);
return false;
}
final removeResult = await _execGit([
'worktree',
'remove',
'--force',
worktreePath,
], cwd: gitRoot);
if (removeResult.code != 0) {
_logForDebugging(
'Failed to remove agent worktree: ${removeResult.stderr}',
level: 'error',
);
return false;
}
_logForDebugging('Removed agent worktree at: $worktreePath');
if (worktreeBranch == null) return true;
final deleteResult = await _execGit([
'branch',
'-D',
worktreeBranch,
], cwd: gitRoot);
if (deleteResult.code != 0) {
_logForDebugging(
'Could not delete agent worktree branch: ${deleteResult.stderr}',
level: 'error',
);
}
return true;
}