OXYGENHUB

Releases 1

oxy 0.8.0 v0.8.0 · ✔ signed by Andy McCall · andymccall ·

Trust and audit
  • A server can add a note to a reference a push moved (issue #148). oxy-server's Backend has a push_notes step: each note is added to that accepted reference's result, which oxy push shows in place of "updated". OxygenHub will use it to say when a push moves the bookmark of a proposal that has already landed (oxygenhub#329).

  • Identical sides settle by themselves (issue #146). Two bookmarks that each resolved the same conflict to the same text conflicted again when merged, both sides the identical lines. A conflict whose sides are byte-identical now settles as merge=union adjacent insertions do (issue #145), in any file and keeping one side: a checkout writes it once ("kept one of its identical sides") and the next commit records the resolution, and a host landing a proposal settles it too.

  • A subrepo at its pinned state is unmodified on any bookmark (issue #147). A subrepo whose heads were exactly its pin's but which sat on another bookmark than the pin named counted as modified, so oxy bookmark switch refused ("the working copy has changes"). Only the state counts now: the same repository at the same heads, or the same Git commit; the recorded pin stands.

  • A shallow clone fetches its checkpoint in parts (issue #137). The checkpoint of a big state came as one answer, the whole state's graph blobs in one body (about 2 GB for the VS Code history), built and held whole on both sides. A server now answers checkpoint-index (the checkpoint and its history, no graphs), and the client fetches the graph blobs it lacks with objects, 2,048 at a time; objects reads them in pack order. An older server answers 404 and gets the one-piece request as before.

  • A keyless agent follows its owner's newest identity (issue #82). Every delegation rotates its owner's identity, so the author.key an agent's home was given goes stale, and its changes named an identity two rotations old (verifying only because a grant from before a rotation still counts). With author.for = ACCOUNT in the home, the hub sends the account's newest linked identity with each certificate, with its chain back to the grant's key; oxy keeps it in the home (keys/author.for), stores the chain beside the change so the grant checks, and authors as it from then on. A repository's own author.key pin still wins.

  • Changelogs stop conflicting (issue #145). A file marked merge=union in .oxyattributes (CHANGELOG.md merge=union) has its adjacent insertions settled by the checkout itself: both sides kept, the earlier change's first, as oxy resolve --both does, and the next commit records the resolution. Only adjacent insertions: where two changes changed the same lines, the markers stay. Oxygen's own changelog is marked so.

  • Two changes adding lines at the same place are settled with one command (issue #121). Like Git, oxy leaves a conflict when two changes each add lines after the same line, since either order can be wrong for code; settling it meant editing out the markers by hand. oxy resolve --both [PATH]… now keeps every side of each such adjacent insertion, the earlier change's first (--reverse for the other order), and oxy status says which conflicts qualify. It leaves the markers where the sides changed the same lines (keeping both would keep two versions of them) or where the lines between the markers were edited. Conflict markers now list their sides earliest change first, not in hash order.

Assets