-
Work log: Design clarification (internal vs public URL separation, layering decision) ~45–60 minutes
Configuration properties + binding + wiring ~30 minutes
GitUrlMapper implementation (clean, tested) ~45 minutes
Modify ProjectServiceImpl (store internal URL properly) ~30–45 minutes
Adjust DTO mapping layer ~30 minutes
Remove entity hack / clean up ~15 minutes
Manual validation (repo creation, repo browser, clone test, external repo test) ~60–90 minutes
Regression sanity check (basic flows) ~45–60 minutes
Total realistic engineering time:
4 to 6 hours
-
Proposed Fix
- Store internal clone URL when creating internal repositories.
- Introduce SztabGitProperties configuration.
- Add GitUrlMapper component to convert internal → public URL.
- Use internal URL exclusively for JGit operations.
- Expose public URL only in REST DTO responses.
- Remove any @Transient entity-based URL replacement logic.
-
rksuma@Ramakrishnans-MacBook-Pro sztab % git checkout -b bug/sz93-Internal-vs-Public-Git-URL-Separation Switched to a new branch 'bug/sz93-Internal-vs-Public-Git-URL-Separation' rksuma@Ramakrishnans-MacBook-Pro sztab % git branch -m bugfix/sz93-Internal-vs-Public-Git-URL-Separation rksuma@Ramakrishnans-MacBook-Pro sztab % -
rksuma@Ramakrishnans-MacBook-Pro sztab % git status On branch bugfix/sz93-Internal-vs-Public-Git-URL-Separation Your branch is up to date with 'origin/bugfix/sz93-Internal-vs-Public-Git-URL-Separation'. nothing to commit, working tree clean rksuma@Ramakrishnans-MacBook-Pro sztab % git checkout wolnosc Switched to branch 'wolnosc' Your branch is up to date with 'origin/wolnosc'. rksuma@Ramakrishnans-MacBook-Pro sztab % git pull origin wolnosc From https://tigase.dev/sztab * branch wolnosc -> FETCH_HEAD Already up to date. rksuma@Ramakrishnans-MacBook-Pro sztab % git merge --no-ff bugfix/sz93-Internal-vs-Public-Git-URL-Separation Merge made by the 'ort' strategy. backend/src/main/java/com/sztab/config/SztabConfig.java | 39 +++++++++++++++++++++++++++++++++++++++ backend/src/main/java/com/sztab/config/git/SztabGitProperties.java | 40 ++++++++++++++++++++++++++++++++++++++++ backend/src/main/java/com/sztab/controller/project/ProjectController.java | 25 +++++++++++++++---------- backend/src/main/java/com/sztab/dto/project/ProjectDto.java | 5 +++-- backend/src/main/java/com/sztab/mapper/ProjectMapper.java | 25 +++++++++++++++++++++++++ backend/src/main/java/com/sztab/mapper/git/GitUrlMapper.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++ backend/src/main/java/com/sztab/security/CustomUserDetailsService.java | 3 +-- backend/src/main/java/com/sztab/security/config/SessionAuthSecurityConfig.java | 9 ++------- backend/src/main/java/com/sztab/service/impl/ProjectServiceImpl.java | 9 ++++++--- backend/src/main/java/com/sztab/sztabina/client/impl/SztabinaClient.java | 2 +- backend/src/main/resources/application-dev.yml | 4 ++-- backend/src/main/resources/application-session-auth.yml | 6 ++++++ backend/src/main/resources/application.yml | 14 ++++++++++++++ backend/src/test/java/com/sztab/controller/project/ProjectControllerTest.java | 21 ++++++++++++++++++++- backend/src/test/java/com/sztab/mapper/git/ProjectMapperTest.java | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ backend/src/test/java/com/sztab/service/ProjectServiceImplTest.java | 11 ++++++++--- deploy/docker/caddy/Caddyfile | 53 ++++++++++++++++++++++++++++++----------------------- deploy/docker/docker-compose.yml | 23 +++++++++++++++++++---- frontend/docker/Dockerfile | 11 ++++++++++- frontend/src/components/project/CreateProjectModal.tsx | 57 ++++++++++++++++++++++++++++++--------------------------- frontend/src/components/project/ProjectCreatedModal.tsx | 5 ++++- frontend/src/config.ts | 5 +++++ sztabina/handlers/git_http_handler.go | 2 +- sztabina/handlers/repo_handler.go | 42 +++++++++++++++++++++++++++++++++--------- sztabina/util/utils.go | 10 ++++++++++ 25 files changed, 426 insertions(+), 97 deletions(-) create mode 100644 backend/src/main/java/com/sztab/config/SztabConfig.java create mode 100644 backend/src/main/java/com/sztab/config/git/SztabGitProperties.java create mode 100644 backend/src/main/java/com/sztab/mapper/ProjectMapper.java create mode 100644 backend/src/main/java/com/sztab/mapper/git/GitUrlMapper.java create mode 100644 backend/src/test/java/com/sztab/mapper/git/ProjectMapperTest.java create mode 100644 frontend/src/config.ts rksuma@Ramakrishnans-MacBook-Pro sztab % git push origin wolnosc Enumerating objects: 1, done. Counting objects: 100% (1/1), done. Writing objects: 100% (1/1), 272 bytes | 272.00 KiB/s, done. Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0) To https://tigase.dev/sztab.git e88c515..f17ad54 wolnosc -> wolnosc rksuma@Ramakrishnans-MacBook-Pro sztab %
| Type |
Bug
|
| Priority |
Blocker
|
| Assignee | |
| Version |
none
|
| Sprints |
n/a
|
| Customer |
n/a
|
Issue Votes (0)
JGit operations in ProjectGitController fail with:
Root cause: backend container cannot resolve or connect to git.sztab.local.
The system currently conflates: • Public clone URL (host-level DNS via reverse proxy) • Internal Docker service URL (container DNS) This results in backend attempting to use public hostname inside Docker network.
Root Cause Analysis 1. git.sztab.local is defined only in host /etc/hosts. 2. Backend runs inside Docker container. 3. Containers do not inherit host /etc/hosts. 4. Therefore JGit attempts to connect to an unreachable hostname. 5. Clone operation fails before authentication (network layer failure).