Skip to content

git 2.0.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 10:57
· 107 commits to main since this release
6ab51dc

mv_git 2.0.0 — git for MultiValue records, on four platforms.

1.x was git for a UniData account. 2.0 is git for an account, wherever it lives: MVX,
UniData and UniVerse are supported and tested, and jBASE is in development (#114) for 2.1.
The headline is that the shell CLI and the in-session GIT verb now commit the same
bytes — which is what makes an account portable between platforms rather than merely
version-controlled on one.

Highlights

  • UniVerse support (#43, #37, #42) — uv-git as a peer of udt-git, with the git
    work in mvgitd, a background process reached over a socket (#40), so a session never
    holds the engine in-process.
  • The CLIs are drop-in git. mvx-git, udt-git and uv-git take the same
    subcommands, flags and argument order as stock git.
  • One implementation, not one per surface. A long tail of this release is deleting
    second opinions: the verb and the CLI now share the enumeration (#81), the furniture
    rules (#95, #87, #72), the descriptor (#91), the dictionary projection (#108) and the
    I-type translation (#90).
  • Multi-account repositories (#44, #49) — several accounts in one repo, with a
    prefix, and an account I/O agent driving records instead of the verbs (#45, #47).
  • Attribute editing (#15, #36) — file geometry (%FILE% + RESIZE) and account
    attributes, including the UniVerse VOC flavour.
  • Installed once, not per account (#80, #104) — mv_git lives in the catalog and
    GIT.SETUP wires an account to it.

Upgrade note

GIT ADD from inside a session now stages dictionary records in the same canonical
form the CLI has always used (#108). The first add after upgrading restates those
records once; after that the verb and the CLI agree, and a fresh clone reads clean either
way.


Everything since 1.6.1, by pre-release

47 issues.

Betas (beta1 – beta4) — UniVerse arrives (20)

The bulk of the release: a second platform, and the architecture change that made it
possible. All of it landed in beta1; beta2–beta4 were the release workflow being got
right — building the UniVerse binary, and marking a pre-release as one.

  • #43 Epic: git on UniVerse · #37 Port git to UniVerse · #42 uv-git, a peer of udt-git
  • #40 mvgitd: reach the git engine over a socket instead of an in-process bridge
  • #45 udt-git: reach records through an account I/O agent, as UniVerse now does · #47 uv-git drives the agent, not the GIT verbs — one licence at a time
  • #49 Engine: multi-account prefix, and four staging/status asymmetries
  • #15 Attribute editing: file geometry (%FILE% + RESIZE) and account attributes · #36 Account attributes editor, including the UniVerse VOC flavour
  • #46 A native .uv account commits the whole default account: subtract the stock VOC
  • #48 A SIGKILLed uv-git leaves its agent session holding a licence · #54 GIT CLONE in-session needs more licences than UniData TE allows
  • #51 status never reports a deleted record · #59 status never reports untracked records, and the suite has no test for it
  • #52 Cloning a native account: the checkout's record directories block account creation
  • #53 uv-git pull hangs after a successful clone · #65 a pull materialises the PRE-pull tree, so the pulled record is missing
  • #55 clone materialises record-by-record through one session and is very slow · #56 uv-git clone leaves an account that cannot run the GIT verb
  • #57 udt-callc: duplicate fragments silently shadow each other

rc1 – rc2 — release plumbing (0)

No user-facing changes: shipping the verbs the mvx package registers.

2.0.0-rc3 — the two CLIs stop disagreeing (7)

  • #81 GIT ADD -A and udt-git add -A commit different things: a third, unfiltered enumeration in BASIC
  • #70 GIT ADD does not subtract the stock VOC: the baseline is built but never consulted
  • #72 Account furniture: UniData's SQL catalogue files are committed by add -A
  • #73 udt-git add -A stages no %FILE%: a native CLI commit carries no file geometry
  • #75 udt-git has no remote or push: the two CLIs have drifted
  • #78 VOC keeps pointers to files that were deliberately not committed
  • #80 mv_git installs itself into every account instead of using the catalog

2.0.0-rc4 — what actually crosses between platforms (12)

  • #90 open dict: I-type expressions cross verbatim, so no TRANS survives the crossing
  • #93 the SM/assoc remap is UniData-only, so an association lands in the wrong attribute
  • #94 A record committed from UniData ends without the trailing newline MVX writes, so every cross-platform commit rewrites every record
  • #95 a stock UniVerse account commits its own furniture — 122 VOC records, the VOC dictionary and D_VOCLIB · #87 VOC furniture shows untracked after add -A + commit · #71 UniData's SQL catalogue files are committed as account content
  • #91 The portable descriptor should not name a backend (hash = lmdb)
  • #96 open account: the generated @ID dictionary item should not travel
  • #88 clone should ask before turning the open-account flag on, not do it silently
  • #85 GIT --VERSION as a verb switch breaks flag parsing for every command
  • #58 A second ADD -A in one session echoes a dictionary id list, and its commit does nothing
  • #44 Design: multi-account repos, and a BASIC I/O helper driven by the CLI

2.0.0-rc5 — packaging (1)

  • #101 Release artifacts and the unpacked account should both be mv_git

2.0.0-rc6 — install and provenance (3)

  • #104 GIT.SETUP: wire an account to an installed mv_git
  • #106 dict_item_swap is compiled out of the UniData build, so the call truncates its pointer
  • #107 A dev build should say so: carry the short commit in the version

2.0.0 — clean round-trip (4)

  • #108 Dictionaries do not round-trip on UniData: a fresh clone never reads clean
  • #111 add -A flattens a submodule's files and destroys the gitlink
  • #112 add -A on a legible (directory-backed) account creates an LMDB store
  • #113 log ignores --oneline

Verified

suite
MVX 96 passed, 0 failed
UniData 81 passed, 0 failed
UniVerse 78 passed, 0 failed

A fresh clone of mvx-lang/demo reads clean through both the CLI and the verb on UniData
and UniVerse.