fix worktree archive terminal cleanup and worktree setup
This commit is contained in:
@@ -93,6 +93,20 @@ describe("createWorktree", () => {
|
||||
rmSync(varTempDir, { recursive: true, force: true });
|
||||
});
|
||||
|
||||
it("reports repoRoot as the repository root for paseo-owned worktrees", async () => {
|
||||
const result = await createWorktree({
|
||||
branchName: "main",
|
||||
cwd: repoDir,
|
||||
baseBranch: "main",
|
||||
worktreeSlug: "repo-root-check",
|
||||
paseoHome,
|
||||
});
|
||||
|
||||
const ownership = await isPaseoOwnedWorktreeCwd(result.worktreePath, { paseoHome });
|
||||
expect(ownership.allowed).toBe(true);
|
||||
expect(ownership.repoRoot).toBe(repoDir);
|
||||
});
|
||||
|
||||
it("creates a worktree with a new branch", async () => {
|
||||
const result = await createWorktree({
|
||||
branchName: "feature-branch",
|
||||
|
||||
@@ -667,11 +667,19 @@ function normalizePathForOwnership(input: string): string {
|
||||
}
|
||||
}
|
||||
|
||||
function resolveRepoRootFromGitCommonDir(commonDir: string): string {
|
||||
const normalizedCommonDir = normalizePathForOwnership(commonDir);
|
||||
return basename(normalizedCommonDir) === ".git"
|
||||
? dirname(normalizedCommonDir)
|
||||
: normalizedCommonDir;
|
||||
}
|
||||
|
||||
export async function isPaseoOwnedWorktreeCwd(
|
||||
cwd: string,
|
||||
options?: { paseoHome?: string }
|
||||
): Promise<PaseoWorktreeOwnership> {
|
||||
const gitCommonDir = await getGitCommonDir(cwd);
|
||||
const repoRoot = resolveRepoRootFromGitCommonDir(gitCommonDir);
|
||||
const worktreesRoot = await getPaseoWorktreesRoot(cwd, options?.paseoHome);
|
||||
const resolvedRoot = normalizePathForOwnership(worktreesRoot) + sep;
|
||||
const resolvedCwd = normalizePathForOwnership(cwd);
|
||||
@@ -679,7 +687,7 @@ export async function isPaseoOwnedWorktreeCwd(
|
||||
if (!resolvedCwd.startsWith(resolvedRoot)) {
|
||||
return {
|
||||
allowed: false,
|
||||
repoRoot: gitCommonDir,
|
||||
repoRoot,
|
||||
worktreeRoot: worktreesRoot,
|
||||
worktreePath: resolvedCwd,
|
||||
};
|
||||
@@ -692,7 +700,7 @@ export async function isPaseoOwnedWorktreeCwd(
|
||||
});
|
||||
return {
|
||||
allowed,
|
||||
repoRoot: gitCommonDir,
|
||||
repoRoot,
|
||||
worktreeRoot: worktreesRoot,
|
||||
worktreePath: resolvedCwd,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user