Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
U+FFFD: a name to refuse rather than a variable to ignore, refused by name
with no devpod call made.

- **On git 2.20 and older, a launch that asks for a new branch no longer fails
outright.** Up to v2.20.0 git wrote `Couldn't find remote ref %s` through a
bare `die()` (`remote.c:1785`) — capital C, and never routed through gettext,
so the `LC_ALL=C` the fetch is pinned under could not normalise it; it is
lowercase and translatable from v2.21.0. The reader that recognises "the
remote has not got this ref" is the one that falls back to the default branch,
and it matched only the later wording. On a host still running that git the
ref-missing *answer* therefore read as a failure, the fallback never ran, and
an ordinary "start a new branch" launch died on a message about a ref nobody
had asked to exist yet. The refusal is classified from the verb that produced
it now, and case does not decide it.

- **A repository that is not there on Codeberg or Forgejo now gets the
wrong-owner hint.** Those hosts answer a 404 with `remote: Not found.`, and
none of the three phrases the renderer sniffed for appear anywhere in that
output — all three were GitHub's and GitLab's wordings. The only other line is
git's own `fatal: repository '<url>' not found`, which does not contain the
substring `repository not found` the renderer was looking for, so a mistyped
owner on those hosts got the bare clone failure and no suggestion of what to
try. The reader matches git's line as a whole line ending in `' not found`
now, which is the host's wording out of the decision entirely, and still keeps
out `branch '%s' not found`, `tag '%s' not found` and `repository '%s' does
not exist`.

## [0.13.0] - 2026-08-24

### Changed
Expand Down
18 changes: 18 additions & 0 deletions rust/devlaunch-core/public-api.rest.txt
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,23 @@ pub fn devlaunch_core::clients::gh::GhUnavailable::fmt(&self, &mut core::fmt::Fo
impl core::marker::Copy for devlaunch_core::clients::gh::GhUnavailable
impl core::marker::StructuralPartialEq for devlaunch_core::clients::gh::GhUnavailable
pub mod devlaunch_core::clients::git
pub enum devlaunch_core::clients::git::Failure
pub devlaunch_core::clients::git::Failure::BranchAlreadyExists
pub devlaunch_core::clients::git::Failure::Exited(devlaunch_runner::Exit)
pub devlaunch_core::clients::git::Failure::GitNotInstalled
pub devlaunch_core::clients::git::Failure::NotStarted(devlaunch_runner::OsFailure)
pub devlaunch_core::clients::git::Failure::RefMissingOnRemote
pub devlaunch_core::clients::git::Failure::RepositoryNotFound
pub devlaunch_core::clients::git::Failure::TimedOut
impl core::clone::Clone for devlaunch_core::clients::git::Failure
pub fn devlaunch_core::clients::git::Failure::clone(&self) -> devlaunch_core::clients::git::Failure
impl core::cmp::Eq for devlaunch_core::clients::git::Failure
impl core::cmp::PartialEq for devlaunch_core::clients::git::Failure
pub fn devlaunch_core::clients::git::Failure::eq(&self, &devlaunch_core::clients::git::Failure) -> bool
impl core::fmt::Debug for devlaunch_core::clients::git::Failure
pub fn devlaunch_core::clients::git::Failure::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
impl core::marker::Copy for devlaunch_core::clients::git::Failure
impl core::marker::StructuralPartialEq for devlaunch_core::clients::git::Failure
pub struct devlaunch_core::clients::git::Git<'r>
impl<'r> devlaunch_core::clients::git::Git<'r>
pub fn devlaunch_core::clients::git::Git<'r>::new(&'r dyn devlaunch_runner::Runner) -> Self
Expand All @@ -183,6 +200,7 @@ pub fn devlaunch_core::clients::git::Git<'r>::clone(&self) -> devlaunch_core::cl
impl<'r> core::marker::Copy for devlaunch_core::clients::git::Git<'r>
pub struct devlaunch_core::clients::git::GitRefused
impl devlaunch_core::clients::git::GitRefused
pub fn devlaunch_core::clients::git::GitRefused::how(&self) -> devlaunch_core::clients::git::Failure
pub fn devlaunch_core::clients::git::GitRefused::reason(&self) -> &str
impl core::clone::Clone for devlaunch_core::clients::git::GitRefused
pub fn devlaunch_core::clients::git::GitRefused::clone(&self) -> devlaunch_core::clients::git::GitRefused
Expand Down
Loading
Loading