Support SCP-like parent URLs with relative submodules

Aperta
#492 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
56/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
git, go
Ambito
devtools

Direzione di ricerca

Inizia individuando ResolveSubmoduleURL e l'esistente scpLikeURLRegex. Leggi la gestione dei percorsi relativi e confrontala con il comportamento di transport.NewEndpoint() di go-git, quindi aggiungi la copertura per gli URL parent simili a SCP e i percorsi relativi dei sottomoduli. Il lavoro è completato quando l'URL segnalato viene risolto senza l'errore attuale e i casi esistenti HTTPS e con più percorsi relativi continuano a funzionare.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

envbuilder Feature

Problem

When the parent repository uses an SCP-like URL (e.g., git@github.com:org/repo.git) and a submodule is configured with a relative path (e.g., ../other/submodule.git), envbuilder cannot resolve the submodule URL.

Currently this returns an error:

relative submodule URL "../other/submodule.git" cannot be resolved: parent URL "git@github.com:org/repo.git" uses SCP-like syntax which is not supported for relative submodule resolution

Background

Go's net/url.Parse() cannot properly parse SCP-like URLs - they have no scheme and use : as a path separator instead of /.

We've built a custom ResolveSubmoduleURL function to handle relative submodule paths because go-git's native implementation has bugs with:

  • HTTPS URLs losing slashes when using filepath.Dir()
  • Multiple relative paths (../../submodule.git) not resolving correctly

Workaround

Users can configure submodules with absolute URLs instead of relative paths.

Proposed Solution

Add SCP-like URL handling to ResolveSubmoduleURL:

  1. Detect SCP-like parent URLs using the existing scpLikeURLRegex
  2. Parse into user, host, and path components
  3. Apply relative path resolution to the path component
  4. Reconstruct the SCP-like URL

Alternatively, use go-git's transport.NewEndpoint() which can parse SCP-like URLs, but this needs careful testing to ensure it doesn't reintroduce the bugs we worked around.

Related/Blocker

  • PR #485: feat: add git submodule support
Lingua principale
Go
Stelle
300
Fork
64
Merge medio
20m
PR unite (30g)
1

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di coder/envbuilder

Tutte le issue di coder/envbuilder

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.