fix: clone workspace into repo-named subdirectory directly

Git clone with an explicit destination puts the working copy directly into
that directory; it does not create a repo-named subdirectory. The previous
change assumed the opposite, so workspaces ended up at
/data/working-copies/{workspace_id}/ with the repo contents mixed in,
causing a 500 when the expected repo-named subdirectory was missing.

- Build the target path as /data/working-copies/{workspace_id}/{repo_name}/
  and pass it directly to GitService.clone
- Remove stale directory detection and fallback logic that is no longer
  needed
- Keep diagnostic logging around git clone failures

Quality gates:
- pytest tests/unit: 219 passed
- mypy: clean on changed files
This commit is contained in:
Developer
2026-06-15 10:09:30 +00:00
parent 83928d0f02
commit 1658767cf4
13 changed files with 28 additions and 50 deletions
+2 -2
View File
@@ -4,11 +4,11 @@ dir: apps/api/src/services
index: apps/api/src/services/.pi-map.index.md
## role
This package serves as a Python namespace marker for the services layer in the API application, indicating a modular architecture where business logic services are organized as a subpackage.
Marks the `services` directory as a Python package for organizing business logic and service-layer modules.
## files
- __init__.py | Empty file with no functionality
## arch
Standard Python package structure using __init__.py for namespace declaration, following conventional layered architecture with services separated into their own directory for future dependency injection and domain logic encapsulation.
Standard Python package structure using `__init__.py` to define an importable namespace, following conventional layered architecture with an empty initializer awaiting future service modules.
## tags
init, empty, functionality
## symbols