Нұсқалар тарихы
Әрбір жазба өзінің ревизиялар журналын жүргізеді — ол өткен барлық күйлердің тарихы. Бұл қалта үстіндегі git-қабат емес, қолданба деңгейіндегі нұсқалау: журнал қызметтік дерекқорда (метадеректер дерекқоры) тұрады және Notarium арқылы өткен немесе файл синхрондауы байқаған күйлерді жинақтайды. Сонымен қатар .md-файлдың өзі шындық көзі болып қала береді — журнал оны алмастырмайды, толықтырады.
Ревизия — бұл снапшот
Әрбір ревизия жазбаның түзету сәтіндегі толық күйін сақтайды: тақырып, тегтер, slug және қалыпқа келтірілген дене — жолма-жол дифф емес. Нұсқаларды салыстыруға арналған диффтер лезде есептеледі, өйткені оларды снапшоттардан қалпына келтіруге болады.
Ревизиялардың денелері мазмұны бойынша адрестеледі (content-addressed, sha-256), сондықтан бірдей мазмұн бір рет сақталады. Нұсқаны қалпына келтіру, агенттің түзету циклдары және қайталанатын күйлер артық көшірмелер тудырмайды — дедупликация мазмұнның өзі бойынша жүреді.
Журналдың кілті — файл жолы емес, жазбаның ішкі идентификаторы (notarium-id). Сондықтан тарих қалталар арасында жылжытуды және атын өзгертуді аман өтеді: бұл әлі де сол тарихы бар сол бір жазба.
Шығу тегі: кім және қалай түзеткен
Әрбір ревизия қол қойылған — өзгеріс қайдан келгені көрінеді. Ревизияның түрі мен автор-субъекті болады:
| Ревизия түрі | Нені білдіреді |
|---|---|
write | Notarium арқылы сақтау (адам немесе агент) |
external | Файл синхрондауы дискіде тікелей байқаған күй |
restore | Өткен нұсқаға кері қайтару (көзіне сілтемені сақтайды) |
delete | Tombstone: жойылған жазбаның соңғы күйі |
Автор нақты пайдаланушы, агенттің жеке токені немесе интерфейс ретінде тіркеледі; сыртқы түзетулердің авторы жоқ — оларға қол қоятын ешкім жоқ. Осылайша тарихта нақ нені адам түзеткені, ал нені ЖИ-агент істегені көрінеді. Адам мен агенттердің түзетулерін бөлу туралы толығырақ — Адам және агенттер бөлімінде.
Файлда тікелей жасалған түзетулерді (Notarium-ды айналып өтіп) журнал синхрондау циклінің дәлдігімен көреді: сұрау аралығындағы бірнеше өзгеріс бір байқалған күйге бірігеді. Notarium-ның өзі арқылы жасалған түзетулер дәл тіркеледі.
Ревизия сонымен қатар қосылған және жойылған таңбалардың санағыштарын алып жүреді — түзетудің алдыңғы нұсқаға қатысты «құнын».
Қарау, салыстыру және қалпына келтіру
Жазбаның тарихы оқу режимінен қолжетімді — бүйір панеліндегі History қойындысы нұсқалар таймлайнын көрсетеді: түзетуді кім енгізгені, +N −M санағыштары және күні. Ревизияны таңдау оны ағымдағы мәтіннің орнына ашады, Changes (кірістірулер мен жоюлар бөлектелген сөзбе-сөз дифф) және Content (мазмұнның өзі) режимдерінің арасында ауыстырғышпен.


Кері қайтару — Restore this version түймесі. Қалпына келтіру денені журналдан алып, оны нұсқаның оптимистік тексеруі арқылы жаңа түзету ретінде жазады: егер жазба сол уақыт ішінде өзгертілген болса, сіз қайшылық (409) аласыз, ешнәрсе үнсіз үстінен жазылмайды.
Сақтау және жою
Әдепкіде тарих толығымен сақталады — Notarium ревизияларды автоматты түрде сирелетпейді. Жазбаның тарихын толықтай қолмен өшіруге болады, оны Себеттен тазалау арқылы: жазбаны жою оның соңғы күйімен tombstone жасайды (оны қалпына келтіруге болады), ал соңғы тазалау тарихты да өшіреді.
Нұсқалар тарихы метадеректер дерекқорын талап етеді. Метадеректер дерекқорынсыз тарих тек процестің жұмыс уақытында ғана тіршілік етеді. Ескі ревизияларды кесте бойынша автоматты сирелету жоқ — тарихты толығымен сақтаймыз.
Сабақтас тақырыптар: File-first — шындық көзі ретіндегі файл, Себет — жою және қалпына келтіру, Қатынау моделі — нұсқаларды кім кері қайтара алады.