git 2.0.0
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-gitas a peer ofudt-git, with the git
work inmvgitd, 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-gitanduv-gittake 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_gitlives in the catalog and
GIT.SETUPwires 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 ofudt-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 · #47uv-gitdrives 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
.uvaccount commits the whole default account: subtract the stock VOC - #48 A SIGKILLed
uv-gitleaves its agent session holding a licence · #54GIT CLONEin-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 pullhangs 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 cloneleaves 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 -Aandudt-git add -Acommit different things: a third, unfiltered enumeration in BASIC - #70
GIT ADDdoes 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 -Astages no%FILE%: a native CLI commit carries no file geometry - #75
udt-githas no remote or push: the two CLIs have drifted - #78 VOC keeps pointers to files that were deliberately not committed
- #80
mv_gitinstalls 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
TRANSsurvives 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 afteradd -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
@IDdictionary item should not travel - #88 clone should ask before turning the open-account flag on, not do it silently
- #85
GIT --VERSIONas a verb switch breaks flag parsing for every command - #58 A second
ADD -Ain 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 installedmv_git - #106
dict_item_swapis 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 -Aflattens a submodule's files and destroys the gitlink - #112
add -Aon a legible (directory-backed) account creates an LMDB store - #113
logignores--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.