mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-09-20 23:18:00 +03:00
clay: port -merge to fusion
This commit is contained in:
parent
6120eeecc0
commit
65766a73e2
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bfdea141b5c28a037952fa06fbe350090b58eb4bd3c8fd7124d75a49ccd50d07
|
||||
size 13151591
|
||||
oid sha256:dfefbd6a561182f85a68c3a26a128168d7a70c17df0be5224bf2c8560a86ecbe
|
||||
size 13157380
|
||||
|
@ -1,80 +0,0 @@
|
||||
/- spider
|
||||
/+ strandio
|
||||
=, strand=strand:spider
|
||||
=, clay
|
||||
|%
|
||||
:: Produce an ankh
|
||||
::
|
||||
++ checkout
|
||||
|= [=ankh deletes=(set path) changes=(map path cage)]
|
||||
^- ^ankh
|
||||
:: Delete
|
||||
::
|
||||
=. ankh
|
||||
=/ dels ~(tap in deletes)
|
||||
|- ^- ^ankh
|
||||
=* outer-loop $
|
||||
?~ dels
|
||||
ankh
|
||||
=. ankh
|
||||
|- ^- ^ankh
|
||||
=* inner-loop $
|
||||
?~ i.dels
|
||||
ankh(fil ~)
|
||||
%= ankh
|
||||
dir
|
||||
%+ ~(put by dir.ankh) i.i.dels
|
||||
%= inner-loop
|
||||
i.dels t.i.dels
|
||||
ankh (~(gut by dir.ankh) i.i.dels *^ankh)
|
||||
==
|
||||
==
|
||||
outer-loop(dels t.dels)
|
||||
:: Add/change
|
||||
::
|
||||
=/ cans=(list [=path =cage]) ~(tap by changes)
|
||||
|- ^- ^ankh
|
||||
=* outer-loop $
|
||||
?~ cans
|
||||
ankh
|
||||
=. ankh
|
||||
=/ orig-path path.i.cans
|
||||
|- ^- ^ankh
|
||||
=* inner-loop $
|
||||
?~ path.i.cans
|
||||
%= ankh
|
||||
fil
|
||||
`[(page-to-lobe [p q.q]:cage.i.cans) cage.i.cans]
|
||||
==
|
||||
%= ankh
|
||||
dir
|
||||
%+ ~(put by dir.ankh) i.path.i.cans
|
||||
%= inner-loop
|
||||
path.i.cans t.path.i.cans
|
||||
ankh (~(gut by dir.ankh) i.path.i.cans *^ankh)
|
||||
==
|
||||
==
|
||||
outer-loop(cans t.cans)
|
||||
:: Produce a mime cache
|
||||
::
|
||||
++ checkout-cache
|
||||
|= [=ship =desk deletes=(set path) changes=(map path cage)]
|
||||
=/ m (strand ,(map path (unit mime)))
|
||||
^- form:m
|
||||
;< our=@p bind:m get-our:strandio
|
||||
=/ mim-builds=(map path schematic:ford)
|
||||
%- ~(run by changes)
|
||||
|= =cage
|
||||
[%cast [our desk] %mime %$ cage]
|
||||
;< mim-results=(map path cage) bind:m (build-cages:strandio mim-builds)
|
||||
=/ can-mim=(map path (unit mime))
|
||||
%- ~(run by mim-results)
|
||||
|= =cage
|
||||
?> ?=(%mime p.cage)
|
||||
`!<(mime q.cage)
|
||||
=/ del-mim=(map path (unit mime))
|
||||
(malt (turn ~(tap in deletes) |=(=path [path ~])))
|
||||
=/ new-mim=(map path (unit mime))
|
||||
(~(uni by del-mim) can-mim)
|
||||
(pure:m new-mim)
|
||||
--
|
@ -155,7 +155,7 @@
|
||||
cez=(map @ta crew) :: permission groups
|
||||
cue=(qeu [=duct =task:able]) :: queued requests
|
||||
act=active-write :: active write
|
||||
pud=(unit [=desk =yuki]) :: pending update
|
||||
pud=(unit [=desk =yoki]) :: pending update
|
||||
== ::
|
||||
::
|
||||
:: Currently active write
|
||||
@ -3473,7 +3473,7 @@
|
||||
?> ?=(~ deletes)
|
||||
=/ data=(map path (each page lobe))
|
||||
(~(run by changes) |=(=cage &+[p q.q]:cage))
|
||||
(park | [~ data] *rang)
|
||||
(park | &+[~ data] *rang)
|
||||
::
|
||||
=/ parent-tako=tako (aeon-to-tako:ze let.dom)
|
||||
=/ data=(map path (each page lobe))
|
||||
@ -3488,7 +3488,7 @@
|
||||
(~(run by changes) |=(=cage &+[p q.q]:cage))
|
||||
::
|
||||
=/ =yuki [~[parent-tako] data]
|
||||
(park | yuki *rang)
|
||||
(park | &+yuki *rang)
|
||||
::
|
||||
:: Unix commit
|
||||
::
|
||||
@ -3524,17 +3524,22 @@
|
||||
++ park
|
||||
=/ check-sane |
|
||||
|^
|
||||
|= [updated=? =yuki =rang]
|
||||
|= [updated=? =yoki =rang]
|
||||
^+ ..park
|
||||
=: hut.ran (~(uni by hut.rang) hut.ran)
|
||||
lat.ran (~(uni by lat.rang) lat.ran)
|
||||
==
|
||||
=/ new-data=(map path (each page lobe))
|
||||
?- -.yoki
|
||||
%& q.p.yoki
|
||||
%| (~(run by q.p.yoki) |=(=lobe |+lobe))
|
||||
==
|
||||
=/ [deletes=(set path) changes=(map path (each page lobe))]
|
||||
=/ previous-yaki
|
||||
?: =(0 let.dom)
|
||||
*yaki
|
||||
(aeon-to-yaki:ze let.dom)
|
||||
(get-changes q.previous-yaki q.yuki)
|
||||
(get-changes q.previous-yaki new-data)
|
||||
~| [from=let.dom deletes=deletes changes=~(key by changes)]
|
||||
::
|
||||
:: promote ford cache
|
||||
@ -3559,13 +3564,13 @@
|
||||
|= [=path =lobe =cage]
|
||||
[lobe %direct lobe [p q.q]:cage]
|
||||
=/ data=(map path lobe)
|
||||
%- ~(urn by q.yuki)
|
||||
%- ~(urn by new-data)
|
||||
|= [=path value=(each page lobe)]
|
||||
?- -.value
|
||||
%| p.value
|
||||
%& lobe:(~(got by change-cages) path)
|
||||
==
|
||||
=/ =yaki (make-yaki p.yuki data now)
|
||||
=/ =yaki (make-yaki p.p.yoki data now)
|
||||
=: let.dom +(let.dom)
|
||||
hit.dom (~(put by hit.dom) +(let.dom) r.yaki)
|
||||
hut.ran (~(put by hut.ran) r.yaki yaki)
|
||||
@ -3908,7 +3913,7 @@
|
||||
:: Delay current update until sys update is complete
|
||||
::
|
||||
++ sys-update
|
||||
|= [=ford=args:ford:fusion =yuki changes=(map path (each page lobe))]
|
||||
|= [=ford=args:ford:fusion =yoki changes=(map path (each page lobe))]
|
||||
^+ ..park
|
||||
=/ updates (need-sys-update changes)
|
||||
:: Don't save ford cache so it gets properly handled when we
|
||||
@ -3917,7 +3922,7 @@
|
||||
=^ updates-cages=(map path [lobe cage]) ford-cache.ford-args
|
||||
(checkout-changes ford-args updates)
|
||||
?> =(~ pud)
|
||||
=. pud `[syd yuki]
|
||||
=. pud `[syd yoki]
|
||||
|^ ?: (~(has by updates) /sys/hoon/hoon)
|
||||
reset
|
||||
?: (~(has by updates) /sys/arvo/hoon)
|
||||
@ -5480,15 +5485,15 @@
|
||||
%park
|
||||
=^ mos ruf
|
||||
=/ den ((de our now ski hen ruf) our des.req)
|
||||
abet:(park:den | [yuk ran]:req)
|
||||
abet:(park:den | [yok ran]:req)
|
||||
[mos ..^$]
|
||||
::
|
||||
%pork
|
||||
=/ [syd=desk =yuki] (need pud.ruf)
|
||||
=/ [syd=desk =yoki] (need pud.ruf)
|
||||
=. pud.ruf ~
|
||||
=^ mos ruf
|
||||
=/ den ((de our now ski hen ruf) our syd)
|
||||
abet:(park:den & yuki *rang)
|
||||
abet:(park:den & yoki *rang)
|
||||
[mos ..^$]
|
||||
::
|
||||
%perm
|
||||
|
@ -567,7 +567,7 @@
|
||||
{$mont des/desk bem/beam} :: mount to unix
|
||||
{$dirk des/desk} :: mark mount dirty
|
||||
{$ogre pot/$@(desk beam)} :: delete mount point
|
||||
{$park des/desk yuk/yuki ran/rang} :: plumbing commit
|
||||
{$park des/desk yok/yoki ran/rang} :: synchronous commit
|
||||
{$perm des/desk pax/path rit/rite} :: change permissions
|
||||
{$pork ~} :: resume commit
|
||||
$>(%trim vane-task) :: trim state
|
||||
@ -693,7 +693,8 @@
|
||||
== ::
|
||||
++ urge |*(a/mold (list (unce a))) :: list change
|
||||
++ whom (each ship @ta) :: ship or named crew
|
||||
++ yuki :: commit
|
||||
++ yoki (each yuki yaki) :: commit
|
||||
++ yuki :: proto-commit
|
||||
$: p/(list tako) :: parents
|
||||
q/(map path (each page lobe)) :: namespace
|
||||
== ::
|
||||
|
@ -1,7 +1,7 @@
|
||||
:: Merge second desk into first
|
||||
::
|
||||
/- spider
|
||||
/+ strandio, clay-commit
|
||||
/+ strandio
|
||||
=, strand=strand:spider
|
||||
=, clay
|
||||
^- thread:spider
|
||||
@ -10,14 +10,16 @@
|
||||
=/ m (strand ,vase)
|
||||
^- form:m
|
||||
;< our=@p bind:m get-our:strandio
|
||||
;< wen=@da bind:m get-time:strandio
|
||||
|^
|
||||
;< now=@da bind:m get-time:strandio
|
||||
::
|
||||
:: Fetch current states
|
||||
::
|
||||
=/ start-path /(scot %p our)/[bob-desk]/(scot %da wen)
|
||||
=/ start-path /(scot %p our)/[bob-desk]/(scot %da now)
|
||||
;< =ali=riot:clay bind:m
|
||||
(warp:strandio ali-ship ali-desk `[%sing %v da+wen /])
|
||||
(warp:strandio ali-ship ali-desk `[%sing %v da+now /])
|
||||
::
|
||||
;< wen=@da bind:m get-time:strandio
|
||||
|^
|
||||
?> ?=(^ ali-riot)
|
||||
=+ !<(=ali=dome q.r.u.ali-riot)
|
||||
=/ ali-tako=tako (~(got by hit.ali-dome) let.ali-dome)
|
||||
@ -32,13 +34,8 @@
|
||||
;< =merge-result bind:m (merge ali-yaki bob-yaki)
|
||||
?~ merge-result
|
||||
(pure:m !>(~))
|
||||
=/ =rang
|
||||
[(malt [r .]:new.u.merge-result ~) lat.u.merge-result]
|
||||
;< [=ankh changes=(map path cage)] bind:m
|
||||
(checkout bob-dome new.u.merge-result [deletes changes]:u.merge-result)
|
||||
;< mim=(map path (unit mime)) bind:m
|
||||
(checkout-cache:clay-commit ali-ship ali-desk deletes.u.merge-result changes)
|
||||
=/ args [bob-desk r.new.u.merge-result rang ankh mim]
|
||||
=/ =rang [~ lat.u.merge-result]
|
||||
=/ args [bob-desk new.u.merge-result rang]
|
||||
;< ~ bind:m
|
||||
(send-raw-card:strandio %pass /merg/[bob-desk]/[ali-desk] %arvo %c %park args)
|
||||
(pure:m !>(~))
|
||||
@ -46,10 +43,7 @@
|
||||
+$ merge-result
|
||||
%- unit
|
||||
$: conflicts=(set path)
|
||||
bop=(map path cage)
|
||||
new=yaki
|
||||
deletes=(set path)
|
||||
changes=(set path)
|
||||
new=yoki
|
||||
lat=(map lobe blob)
|
||||
==
|
||||
::
|
||||
@ -57,19 +51,12 @@
|
||||
|= [=ali=yaki bob-yaki=(unit yaki)]
|
||||
=/ m (strand ,merge-result)
|
||||
^- form:m
|
||||
?: ?=(%init germ)
|
||||
::
|
||||
:: If this is an %init merge, we set the ali's commit to be bob's.
|
||||
::
|
||||
%: pure:m
|
||||
~
|
||||
conflicts=~
|
||||
bop=~
|
||||
new=ali-yaki
|
||||
deletes=~
|
||||
changes=~(key by q.ali-yaki)
|
||||
lat=~
|
||||
==
|
||||
?: ?=(%init germ)
|
||||
(pure:m ~ conflicts=~ new=|+ali-yaki lat=~)
|
||||
::
|
||||
=/ bob-yaki (need bob-yaki)
|
||||
|^
|
||||
?- germ
|
||||
@ -85,14 +72,10 @@
|
||||
(pure:m ~)
|
||||
?: (~(has in (reachable-takos r.bob-yaki)) r.ali-yaki)
|
||||
(pure:m ~)
|
||||
=/ new-yaki (make-yaki [r.bob-yaki r.ali-yaki ~] q.bob-yaki wen)
|
||||
%: pure:m
|
||||
~
|
||||
conflicts=~
|
||||
bop=~
|
||||
new=new-yaki
|
||||
deletes=~
|
||||
changes=~
|
||||
new=&+[[r.bob-yaki r.ali-yaki ~] (to-yuki q.bob-yaki)]
|
||||
lat=~
|
||||
==
|
||||
::
|
||||
@ -103,14 +86,10 @@
|
||||
%that
|
||||
?: =(r.ali-yaki r.bob-yaki)
|
||||
(pure:m ~)
|
||||
=/ new-yaki (make-yaki [r.bob-yaki r.ali-yaki ~] q.ali-yaki wen)
|
||||
%: pure:m
|
||||
~
|
||||
conflicts=~
|
||||
bop=~
|
||||
new=new-yaki
|
||||
deletes=get-deletes
|
||||
changes=get-changes
|
||||
new=&+[[r.bob-yaki r.ali-yaki ~] (to-yuki q.ali-yaki)]
|
||||
lat=~
|
||||
==
|
||||
::
|
||||
@ -131,15 +110,7 @@
|
||||
%^ error %bad-fine-merge
|
||||
leaf+"tried fast-forward but is not ancestor or descendant"
|
||||
~
|
||||
%: pure:m
|
||||
~
|
||||
conflicts=~
|
||||
bop=~
|
||||
new=ali-yaki
|
||||
deletes=get-deletes
|
||||
changes=get-changes
|
||||
lat=~
|
||||
==
|
||||
(pure:m ~ conflicts=~ new=|+ali-yaki lat=~)
|
||||
::
|
||||
?(%meet %mate %meld)
|
||||
?: =(r.ali-yaki r.bob-yaki)
|
||||
@ -187,10 +158,7 @@
|
||||
%: pure:m
|
||||
~
|
||||
conflicts=~
|
||||
bop=~
|
||||
new=(make-yaki [r.bob-yaki r.ali-yaki ~] hat wen)
|
||||
deletes=get-deletes
|
||||
changes=get-changes
|
||||
new=&+[[r.bob-yaki r.ali-yaki ~] (to-yuki hat)]
|
||||
lat=~
|
||||
==
|
||||
==
|
||||
@ -208,28 +176,6 @@
|
||||
takos :: hence skip
|
||||
(~(uni in takos) ^$(tak q)) :: otherwise traverse
|
||||
::
|
||||
++ get-deletes
|
||||
%- silt ^- (list path)
|
||||
%+ murn ~(tap by (~(uni by q.bob-yaki) q.ali-yaki))
|
||||
|= [=path =lobe]
|
||||
^- (unit ^path)
|
||||
=/ a (~(get by q.ali-yaki) path)
|
||||
=/ b (~(get by q.bob-yaki) path)
|
||||
?: |(=(a b) !=(~ a))
|
||||
~
|
||||
`path
|
||||
::
|
||||
++ get-changes
|
||||
%- silt ^- (list path)
|
||||
%+ murn ~(tap by (~(uni by q.bob-yaki) q.ali-yaki))
|
||||
|= [=path =lobe]
|
||||
^- (unit ^path)
|
||||
=/ a (~(get by q.ali-yaki) path)
|
||||
=/ b (~(get by q.bob-yaki) path)
|
||||
?: |(=(a b) =(~ a))
|
||||
~
|
||||
`path
|
||||
::
|
||||
:: Find the most recent common ancestor(s).
|
||||
::
|
||||
:: Pretty sure this could be a lot more efficient.
|
||||
@ -308,37 +254,11 @@
|
||||
~
|
||||
`[pax ~]
|
||||
==
|
||||
--
|
||||
::
|
||||
++ checkout
|
||||
|^
|
||||
|= [=bob=dome =yaki deletes=(set path) changes=(set path)]
|
||||
=/ m (strand ,[ankh (map path cage)])
|
||||
^- form:m
|
||||
=/ start-path /(scot %p our)/[bob-desk]/(scot %da wen)
|
||||
=/ builds
|
||||
%- malt
|
||||
%+ turn ~(tap in changes)
|
||||
|= =path
|
||||
[path (lobe-to-schematic start-path (~(got by q.yaki) path))]
|
||||
;< results=(map path cage) bind:m (build-cages:strandio builds)
|
||||
(pure:m (checkout:clay-commit ank.bob-dome deletes results) results)
|
||||
::
|
||||
++ lobe-to-schematic
|
||||
|= [=start=path =lobe]
|
||||
^- schematic:ford
|
||||
=+ .^(=blob %cs (weld start-path /blob/(scot %uv lobe)))
|
||||
=/ =disc:ford [ali-ship ali-desk]
|
||||
?- -.blob
|
||||
%direct (page-to-schematic disc q.blob)
|
||||
%delta [%pact disc $(lobe q.q.blob) (page-to-schematic disc r.blob)]
|
||||
==
|
||||
::
|
||||
++ page-to-schematic
|
||||
|= [=disc:ford =page]
|
||||
?. ?=(%hoon p.page)
|
||||
[%volt disc page]
|
||||
[%$ p.page [%atom %t ~] q.page]
|
||||
++ to-yuki
|
||||
|= m=(map path lobe)
|
||||
^- (map path (each page lobe))
|
||||
(~(run by m) |=(=lobe |+lobe))
|
||||
--
|
||||
::
|
||||
++ error
|
||||
|
Loading…
Reference in New Issue
Block a user