Repository navigation
v0.9.0 - reject non-fast-forward pushes
[0.9.0] - 2026-09-04
In plain terms: Until now, when you pushed your saved work to a shared
repository, the server did not check whether anyone else had pushed newer
work in the meantime. That meant a push based on older data could quietly
overwrite or orphan someone else's newer commits, with no warning at all —
exactly the kind of silent data loss git protects you from. From now on, the
server behaves like git: if the remote "main" branch has advanced beyond the
version your push was based on, it refuses the push and tells you to pull
first. deltix push then shows a clear message instead of silently moving
ahead.
New
- Reject non-fast-forward pushes (mirrors git's default refusal). The
push-commitsendpoint now accepts an optionalfrom— the remote head the
client last pulled from. Before importing any commit, the server compares
fromagainst the current head of itsmainbranch; if they don't match
(because another dev pushed in the meantime), it responds409with a
non-fast-forwardcode instead of importing the commits. This prevents a
stale-base push from overwriting or orphaning a newer commit on the remote
branch. - Backwards-compatible protocol. A client that does not send
from
(older versions) is treated as before — the server skips the check, so
existing clients and the push path keep working unchanged.
Fixed
- (None — this is a new safety guard, not a bug fix.)
Tests
- Unit suite: 92 passing tests in the versioning context, including new
cases that a matchingfromis accepted, a mismatchedfromis rejected
withNonFastForwardError(and no commits are imported), and an absent
fromis accepted for backwards compatibility.