forgejo-contrib-forgejo-cli-pulls-542.md
Watch20
Star402
Fork
You've already forked forgejo-cli
CodeIssues 44Pull requests 8Releases 11Packages 2WikiActivity
Merged
Cyborusmerged 2 commits from piotr-ginal/forgejo-cli:ginal/fix-scp-url into main 2026-07-06 21:16:56 +02:00
Conversation 0Commits 2Files changed 1 +24 -4
piotr-ginal commented 2026-07-02 22:27:24 +02:00
Contributor
Copy link
When trying to use the CLI with the foolowing remote url configured (as the only remote): [email protected]:piotr-ginal/forgejo-cli.git
I got the following error:
$ fj --host codeberg.org repo view
Error: relative URL without a base
Location:
src/repo.rs:136:43
The same remote (same repo etc) but with cli compiled on ade375d23c
$ ./target/release/fj --host codeberg.org repo view
keys file not found, creating
piotr-ginal/forgejo-cli
Fork of forgejo-contrib/forgejo-cli
The problem causing this was introduced in 1df2ad5b01 #462
git show 1df2ad5b01f3fec5786b81f51dd7751b3ad768a1 -- src/main.rs
fn ssh_url_parse(s: &str) -> Result<url::Url, url::ParseError> {
- url::Url::parse(s).or_else(|_| {
+ let mut url = url::Url::parse(s)?;
+ if url.cannot_be_a_base() {
let mut new_s = String::new();
new_s.push_str("ssh://");
let auth_end = s.find("@").unwrap_or(0);
new_s.push_str(&s[..auth_end]);
new_s.push_str(&s[auth_end..].replacen(":", "/", 1));
- url::Url::parse(&new_s)
- })
+ url = url::Url::parse(&new_s)?
+ }
The scp-like syntax (user@host:path) fails Url::parse outright with a parse error, so it never reaches the cannot_be_a_base() check.
@tpikonen Am i missing something here?
Also, ive written two simple test cases showing this bug, feel free to check out at the commit adding the test and run cargo test to see for yourself.
As these would be the only tests in this repo, just let me know and ill drop the commit from the PR
[email protected]:piotr-ginal/forgejo-cli.git I got the following error: $ fj --host codeberg.org repo view Error: relative URL without a base Location: src/repo.rs:136:43 The same remote (same repo etc) but with cli compiled on ade375d23c07a5c9dc1b01568ef0c9703f18a3aa $ ./target/release/fj --host codeberg.org repo view keys file not found, creating piotr-ginal/forgejo-cli Fork of forgejo-contrib/forgejo-cli The problem causing this was introduced in 1df2ad5b01f3fec5786b81f51dd7751b3ad768a1 #462 git show 1df2ad5b01f3fec5786b81f51dd7751b3ad768a1 -- src/main.rs diff fn ssh_url_parse(s: &str) -\> Result\<url::Url, url::ParseError\> { - url::Url::parse(s).or_else(|_| { + let mut url = url::Url::parse(s)?; + if url.cannot_be_a_base() { let mut new_s = String::new(); new_s.push_str("ssh://"); let auth_end = s.find("@").unwrap_or(0); new_s.push_str(&s[..auth_end]); new_s.push_str(&s[auth_end..].replacen(":", "/", 1)); - url::Url::parse(&new_s) - }) + url = url::Url::parse(&new_s)? + } The scp-like syntax (user@host:path) fails Url::parse outright with a parse error, so it never reaches the cannot_be_a_base() check. @tpikonen Am i missing something here? Also, ive written two simple test cases showing this bug, feel free to check out at the commit adding the test and run cargo test to see for yourself. As these would be the only tests in this repo, just let me know and ill drop the commit from the PR ### Code of Conduct - [x] I agree to act in accordance with the CoC & AI Agreement. - [x] This contribution was not generated by an LLM, even in part.piotr-ginal added 1 commit 2026-07-02 22:27:25 +02:00
fix: parsing scp-like remote url syntax
All checks were successful
ci/woodpecker/pr/check-typos Pipeline was successful
ci/woodpecker/pr/check Pipeline was successful
ci/woodpecker/pr/check-clippy Pipeline was successful
piotr-ginal force-pushed ginal/fix-scp-url from fcbd2e860f
All checks were successful
ci/woodpecker/pr/check-typos Pipeline was successful
ci/woodpecker/pr/check Pipeline was successful
ci/woodpecker/pr/check-clippy Pipeline was successful
to 8ce903e0b2
All checks were successful
ci/woodpecker/pr/check-typos Pipeline was successful
ci/woodpecker/pr/check Pipeline was successful
ci/woodpecker/pr/check-clippy Pipeline was successful
2026-07-02 22:29:43 +02:00 Compare
piotr-ginal force-pushed ginal/fix-scp-url from 8ce903e0b2
All checks were successful
ci/woodpecker/pr/check-typos Pipeline was successful
ci/woodpecker/pr/check Pipeline was successful
ci/woodpecker/pr/check-clippy Pipeline was successful
to 8bf319223a
All checks were successful
ci/woodpecker/pr/check-typos Pipeline was successful
ci/woodpecker/pr/check Pipeline was successful
ci/woodpecker/pr/check-clippy Pipeline was successful
2026-07-03 00:36:48 +02:00 Compare
Cyborus approved these changes 2026-07-06 20:23:41 +02:00
Cyborus merged commit 8f081ea058 into main 2026-07-06 21:16:56 +02:00
Cyborus referenced this pull request from a commit 2026-07-06 21:16:57 +02:00 Merge pull request 'fix: parsing scp-like remote url syntax' (#542) from piotr-ginal/forgejo-cli:ginal/fix-scp-url into main
Sign in to join this conversation.
Reviewers
No reviewers
Labels
Clear labels[ Kind/Breaking Breaking change that won't be backward compatible
](#)[ Kind/Bug Something is not working
](#)[ Kind/Design Discussion about UI/UX design
](#)[ Kind/Documentation Documentation changes
](#)[ Kind/Enhancement Improve existing functionality
](#)[ Kind/Feature New functionality
](#)[ Kind/Security This is security issue
](#)[ Kind/Testing Issue or pull request related to testing
](#)[ Kind/Upstream This is an issue with upstream software (Forgejo) that is probably not our fault
](#)
[ Priority
Critical The priority is critical
](#)[ Priority
High The priority is high
](#)[ Priority
Low The priority is low
](#)[ Priority
Medium The priority is medium
](#)
[ Reviewed
Confirmed Issue has been confirmed
](#)[ Reviewed
Duplicate This issue or pull request already exists
](#)[ Reviewed
Invalid Invalid issue
](#)[ Reviewed
Won't Fix This issue won't be fixed
](#)
[ Status
Abandoned Somebody has started to work on this but abandoned work
](#)[ Status
Blocked Something is blocking this issue or pull request
](#)[ Status
Need More Info Feedback is required to reproduce issue or to continue work
](#)
[ Suspicious
](#)
No labels Kind/Breaking Kind/Bug Kind/Design Kind/Documentation Kind/Enhancement Kind/Feature Kind/Security Kind/Testing Kind/Upstream [ Priority
Critical ](/forgejo-contrib/forgejo-cli/pulls?labels=173012) [ Priority
High ](/forgejo-contrib/forgejo-cli/pulls?labels=173013) [ Priority
Low ](/forgejo-contrib/forgejo-cli/pulls?labels=173015) [ Priority
Medium ](/forgejo-contrib/forgejo-cli/pulls?labels=173014) [ Reviewed
Confirmed ](/forgejo-contrib/forgejo-cli/pulls?labels=173007) [ Reviewed
Duplicate ](/forgejo-contrib/forgejo-cli/pulls?labels=173005) [ Reviewed
Invalid ](/forgejo-contrib/forgejo-cli/pulls?labels=173006) [ Reviewed
Won't Fix ](/forgejo-contrib/forgejo-cli/pulls?labels=173008) [ Status
Abandoned ](/forgejo-contrib/forgejo-cli/pulls?labels=173011) [ Status
Blocked ](/forgejo-contrib/forgejo-cli/pulls?labels=173010) [ Status
Need More Info ](/forgejo-contrib/forgejo-cli/pulls?labels=173009) Suspicious
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
Notifications Subscribe
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
forgejo-contrib/forgejo-cli!542
WritePreview
Loading…
Add table
| Rows | | | Columns | |
CancelOK
Add a link
Url Description Hint: With a URL in your clipboard, you can paste directly into the editor to create a link.
CancelOK
CancelSave
Reference in a new issue
Repository
forgejo-contrib/forgejo-cli
Title
Body
Create issue
No description provided.
Delete branch "piotr-ginal/forgejo-cli:ginal/fix-scp-url"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
No Yes