diff --git a/main/app/merge/core.hook b/main/app/merge/core.hook
index 9a50a3dbb..1a9176695 100644
--- a/main/app/merge/core.hook
+++ b/main/app/merge/core.hook
@@ -16,6 +16,7 @@
[%nice ~]
[%rush %tang (list tank)]
==
+++ milk (trel ship desk silk)
++ move ,[p=bone q=(mold note gift)]
++ note
$% $: %c
@@ -53,7 +54,7 @@
[%dune p=(set beam) q=(unit gage)] :: unit literal
[%file p=beam] :: from clay
[%join p=mark q=silk r=silk] :: merge
- [%mash p=mark q=silk r=silk] :: merge
+ [%mash p=mark q=milk r=milk] :: merge
[%mute p=silk q=(list (pair wing silk))] :: mutant
[%pact p=silk q=silk] :: patch
[%reef ~] :: kernel reef
@@ -141,7 +142,7 @@
++ work
|= sih=sign
^+ +>
- ~& > [%working auto=auto gem=gem syd=syd her=her sud=sud]
+ ~| [%working auto=auto gem=gem syd=syd her=her sud=sud]
?: ?=(%meld gem)
?- -.sih
%g
@@ -174,10 +175,12 @@
=+ base=[%file [our.hid tic %da lat.hid] (flop pax)]
=+ alis=[%file [her sud cas] (flop pax)]
=+ bobs=[%file [our.hid syd %da lat.hid] (flop pax)]
+ =+ dali=[%diff base alis]
+ =+ dbob=[%diff base bobs]
=+ ^- for=mark
=+ (slag (dec (lent pax)) pax)
?~(- %$ i.-)
- [%mash for [%diff base alis] [%diff base bobs]]
+ [%mash for [her sud dali] [our.hid syd dbob]]
==
=+ "failed to merge with strategy {
}"
lose:(spam leaf/- q.p.are.sih)
@@ -201,7 +204,8 @@
=+ ^- tan=(list tank)
%- zing
^- (list (list tank))
- :~ :~ leaf/"done setting up scratch space in %{-}"
+ :~ :~ leaf/""
+ leaf/"done setting up scratch space in %{-}"
leaf/"please resolve conflicts in the following files and run"
leaf/":merge %{(trip syd)} our %{-}"
==
@@ -209,18 +213,19 @@
~
:~ leaf/""
leaf/"annotated conflicts in:"
- >annotated<
+ >`(list path)`annotated<
==
?~ unnotated
~
:~ leaf/""
- leaf/"some conflicts could not be annontated."
+ leaf/"some conflicts could not be annotated."
leaf/"for these, the scratch space contains"
leaf/"the most recent common ancestor of the"
leaf/"conflicting content."
leaf/""
+
leaf/"unannotated conflicts in:"
- >unnotated<
+ >`(list path)`unnotated<
==
==
=< win
diff --git a/main/arvo/clay.hoon b/main/arvo/clay.hoon
index 7b53014c4..5ca434384 100644
--- a/main/arvo/clay.hoon
+++ b/main/arvo/clay.hoon
@@ -198,17 +198,14 @@
++ aver :: read
|= mun=mood
^- (unit (unit (each cage silk)))
- ~? =(for ~zod) [%avering mun]
?: &(=(p.mun %u) !=(p.q.mun now)) :: prevent bad things
~& [%clay-fail p.q.mun %now now]
!!
=+ ezy=?~(ref ~ (~(get by haw.u.ref) mun))
?^ ezy
`(bind u.ezy (cury same %&))
- ~? =(for ~zod) [%case-to-aeoning mun]
=+ nao=(case-to-aeon:ze q.mun)
:: ~& [%aver-mun nao [%from syd lim q.mun]]
- ~? =(for ~zod) [%reading-at-aeon mun]
?~(nao ~ (read-at-aeon:ze u.nao mun))
::
++ made-to-tage
@@ -519,19 +516,19 @@
++ take-patch
|= res=(each bead (list tank))
^+ +>
- ~& > %taking-patch
+ :: ~& %taking-patch
?: ?=(%| -.res)
%_ +>.$
dok ~
yel
[[hen %note '!' %rose [" " "" ""] leaf/"clay patch failed" p.res] yel]
==
- ~& > %editing
+ :: ~& %editing
=^ hat +>.$
(edit:ze now %& *cart ?~(dok ~|(%no-changes !!) sot.u.dok))
- ~& > %edited
+ :: ~& %edited
=. +>.$ wake
- ~& > %woked
+ :: ~& %woked
?~ dok ~& %no-dok +>.$
?^ lon.u.dok ~& %not-done-diffing !!
=>
@@ -547,7 +544,7 @@
?^ lon.u.dok ~& %not-done-diffing !!
=+ cay=q.p.res
?@ p.cay ~| %patch-bad-marc !!
- ~& > %canning
+ :: ~& %canning
=+ ^= can
|- ^- (list ,[path cage])
?~ p.p.cay
@@ -565,10 +562,10 @@
!!
:- ((hard path) -.q.coy)
[q.i.p.p.cay (slot 3 coy)]
- ~& > %canned
- ~& > %checking-out
+ :: ~& %canned
+ :: ~& %checking-out
=. ank.dom (checkout-ankh:ze (mo can))
- ~& > %checked-out
+ :: ~& %checked-out
?~ hez +>.$(dok ~)
=+ ^= ceq
|= a=miso
@@ -576,8 +573,8 @@
&(?=(%ins -.a) ?=(%mime -.+.a))
&(?=(%mut -.a) ?=(%mime -.+>.a))
==
- ~& > %forming-ergo
- =- ~& > %formed-ergo -
+ :: ~& %forming-ergo
+ :: =- ~& %formed-ergo -
%_ +>.$
dok ~
tag :: ?~(hez reg :_(reg [u.hez [%ergo who syd let.dom]]))
@@ -904,9 +901,9 @@
==
=+ nao=(case-to-aeon:ze q.p.q.i.xiq)
?~ nao $(xiq t.xiq, xaq [i.xiq xaq])
- ~& > %reading-at-aeon
+ :: ~& %reading-at-aeon
=+ vid=(read-at-aeon:ze u.nao p.q.i.xiq)
- ~& > %red-at-aeon
+ :: ~& %red-at-aeon
?~ vid ~& [%oh-well mood=p.q.i.xiq] $(xiq t.xiq, xaq [i.xiq xaq])
$(xiq t.xiq, ..wake (balk p.i.xiq u.vid p.q.i.xiq))
::
@@ -1255,20 +1252,17 @@
++ read-x
|= [yon=aeon pax=path]
^- (unit (unit (each cage silk)))
- ~? =(for ~zod) [%reading-x yon pax]
=+ tak=(~(get by hit.dom) yon)
?~ tak
~
?: &(?=(~ ref) =(yon let.dom))
`(bind q.ank:(descend-path:(zu ank.dom) pax) (corl (cury same %&) tail))
- ~? =(for ~zod) [%coming-along yon pax]
=+ yak=(tako-to-yaki u.tak)
=+ lob=(~(get by q.yak) pax)
?~ lob
[~ ~]
=+ mar=(lobe-to-mark u.lob)
?. ?=(?(%hoon %hook) mar)
- ~? =(for ~zod) [%not-hooning yon pax]
[~ ~ %| (lobe-to-silk pax u.lob)]
:^ ~ ~ %&
:+ mar [%atom %t]
@@ -1448,15 +1442,15 @@
::
%fine
?: =(r.ali.dat r.bob.dat)
- ~& > [%fine-trivial ali= bob= r.ali.dat r.bob.dat]
+ ~& [%fine-trivial ali= bob= r.ali.dat r.bob.dat]
(done:he ~)
?: (~(has in (reachable-takos r.bob.dat)) r.ali.dat)
- ~& > [%fine-mostly-trivial ali= bob=]
+ ~& [%fine-mostly-trivial ali= bob=]
(done:he ~)
?. (~(has in (reachable-takos r.ali.dat)) r.bob.dat)
- ~& > [%fine-not-so-trivial ali= bob=]
+ ~& [%fine-not-so-trivial ali= bob=]
(error:he %bad-fine-merge ~)
- ~& > [%fine-lets-go ali= bob=]
+ ~& [%fine-lets-go ali= bob=]
=. new.dat ali.dat
=. erg.dat
%- mo ^- (list ,[path ?])
@@ -2203,7 +2197,6 @@
++ scry :: inspect
|= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path]
^- (unit (unit cage))
- ~? =(his ~zod) [%scrying ren syd lot tyl]
=+ got=(~(has by fat.ruf) his)
=+ luk=?.(?=(%$ -.lot) ~ ((soft case) p.lot))
?~ luk [~ ~]
diff --git a/main/arvo/ford.hoon b/main/arvo/ford.hoon
index a231c691a..18f92dee5 100644
--- a/main/arvo/ford.hoon
+++ b/main/arvo/ford.hoon
@@ -50,6 +50,7 @@
++ kiss :: in request ->$
$% [%exec p=@p q=beak r=(unit silk)] :: make / kill
== ::
+++ milk (trel ship desk silk) :: sourced silk
++ move ,[p=duct q=(mold note gift)] :: local move
++ note :: out request $->
$% $: %c :: to %clay
@@ -73,7 +74,7 @@
[%dune p=(set beam) q=(unit gage)] :: unit literal
[%file p=beam] :: from clay
[%join p=mark q=silk r=silk] :: merge
- [%mash p=mark q=silk r=silk] :: merge
+ [%mash p=mark q=milk r=milk] :: annotate
[%mute p=silk q=(list (pair wing silk))] :: mutant
[%pact p=silk q=silk] :: patch
[%plan p=beam q=spur r=hood] :: structured assembly
@@ -710,10 +711,9 @@
==
::
++ mash
- |= [cof=cafe for=mark kas=silk kos=silk]
+ |= [cof=cafe for=mark mas=milk mos=milk]
^- (bolt gage)
- ~& > [%lets-see-if-we-cannae-be-mashing for]
- %. [cof kas kos]
+ %. [cof r.mas r.mos]
;~ cope
;~ coax
|=([cof=cafe p=silk q=silk] (make cof p))
@@ -733,7 +733,8 @@
=+ too=((soft ,@tas) q:(slap gar [%cnzy %sted]))
?~ too
(flaw cof leaf/"bad ++sted:grad" ~)
- (make cof %mash u.too [%done ~ cay] [%done ~ coy])
+ %+ make cof
+ [%mash u.too [p.mas q.mas [%done ~ cay]] [p.mos q.mos [%done ~ coy]]]
=+ fom=((soft ,@tas) q:(slap gar [%cnzy %form]))
?~ fom
(flaw cof leaf/"bad ++form:grad" ~)
@@ -748,7 +749,12 @@
%+ cope
%^ maul cof
(slap (slap pro [%cnzy %grad]) [%cnzy %mash])
- (slop q.cay q.coy)
+ ;: slop
+ (slop [[%atom %p] p.mas] [[%atom %tas] q.mas])
+ (slop [[%atom %p] p.mos] [[%atom %tas] q.mos])
+ q.cay
+ q.coy
+ ==
|= [cof=cafe dif=vase]
(fine cof u.fom dif)
==
@@ -834,7 +840,7 @@
|= [cof=cafe bem=beam]
^- (bolt beam)
?: ?=(%ud -.r.bem) (fine cof bem)
- =+ von=(ska ~ %cw bem(s ~))
+ =+ von=(save ~ %cw bem(s ~))
?~ von [p=cof q=[%1 [%w bem ~] ~ ~]]
(fine cof bem(r [%ud ((hard ,@) +.+:(need u.von))]))
::
@@ -859,14 +865,7 @@
++ lear :: load vase
|= [cof=cafe bem=beam]
^- (bolt cage)
- ~& > [%a-bit-leary bem]
- =+ ral=(~(get by keg) %cx bem)
- ?^ ral
- ~& > %already-done
- (fine cof u.ral)
- ~& > %not-already-done
- =+ von=(ska ~ %cx bem)
- ~& > [%at-least-cx-worked bem]
+ =+ von=(save ~ %cx bem)
?~ von
[p=*cafe q=[%1 [[%x bem ~] ~ ~]]]
?~ u.von
@@ -876,14 +875,14 @@
++ lend :: load arch
|= [cof=cafe bem=beam]
^- (bolt arch)
- =+ von=(ska ~ %cy bem)
+ =+ von=(save ~ %cy bem)
?~ von [p=cof q=[%1 [%y bem ~] ~ ~]]
(fine cof ((hard arch) q.q:(need u.von)))
::
++ liar :: load vase
|= [cof=cafe bem=beam]
^- (bolt vase)
- =+ von=(ska ~ %cx bem)
+ =+ von=(save ~ %cx bem)
?~ von
[p=*cafe q=[%1 [[%x bem ~] ~ ~]]]
?~ u.von
@@ -1020,7 +1019,7 @@
^- (bolt vase)
%+ cope (mail cof p.vax gen)
|= [cof=cafe typ=type fol=nock]
- %+ (coup cof) (mock [q.vax fol] (mole (slod (save ska))))
+ %+ (coup cof) (mock [q.vax fol] (mole (slod save)))
|=(val=* `vase`[typ val])
::
++ make :: reduce silk
@@ -1189,7 +1188,7 @@
^- (bolt vase)
%+ cope (malt cof p.gat p.sam)
|= [cof=cafe typ=type]
- %+ (coup cof) (mong [q.gat q.sam] (mole (slod (save ska))))
+ %+ (coup cof) (mong [q.gat q.sam] (mole (slod save)))
|=(val=* `vase`[typ val])
::
++ meow :: assemble
@@ -1557,14 +1556,13 @@
exec(q.kig (~(del by q.kig) tik), keg (~(put by keg) [- bem] r.u.rot))
::
++ save
- |= sky=sled
^- sled
|= [(unit (set monk)) tem=term bem=beam]
^- (unit (unit cage))
=+ (~(get by keg) tem bem)
?^ -
``u.-
- (sky +<.$)
+ (ska +<.$)
--
--
::
diff --git a/main/mar/mime/door.hook b/main/mar/mime/door.hook
index e7e52af92..7c699f828 100644
--- a/main/mar/mime/door.hook
+++ b/main/mar/mime/door.hook
@@ -13,6 +13,6 @@
++ form %mime
++ diff |=(mime +<)
++ pact |=(mime +<)
- ++ join |=([mime mime] `(unit mime)``+<-)
+ ++ join |=([mime mime] `(unit mime)`~)
--
--
diff --git a/main/mar/txt/door.hook b/main/mar/txt/door.hook
index 667a9de30..2cf7285eb 100644
--- a/main/mar/txt/door.hook
+++ b/main/mar/txt/door.hook
@@ -1,4 +1,4 @@
-:: maybeze
+::
:::: /hook/door/term-line/mar
::
/? 314
@@ -27,6 +27,7 @@
::
++ pact
|= dif=(urge cord)
+ ~| [%pacting dif]
^- wain
(lurk txt dif)
::
@@ -60,6 +61,7 @@
|=(cud=(urge cord) [i.bob cud])
~
==
+ ::
%|
?- -.i.bob
%| ~
@@ -88,8 +90,166 @@
--
::
++ mash
- |= [ali=(urge cord) bob=(urge cord)]
+ |= [als=[ship desk] bos=[ship desk] ali=(urge cord) bob=(urge cord)]
^- (urge cord)
- (fall (join ali bob) ali)
+ |^
+ =. ali (clean ali)
+ =. bob (clean bob)
+ |- ^- (urge cord)
+ ?~ ali bob
+ ?~ bob ali
+ ?- -.i.ali
+ %&
+ ?- -.i.bob
+ %&
+ ?: =(p.i.ali p.i.bob)
+ [i.ali $(ali t.ali, bob t.bob)]
+ ?: (gth p.i.ali p.i.bob)
+ [i.bob $(p.i.ali (sub p.i.ali p.i.bob), bob t.bob)]
+ [i.ali $(ali t.ali, p.i.bob (sub p.i.bob p.i.ali))]
+ ::
+ %|
+ ?: =(p.i.ali (lent p.i.bob))
+ [i.bob $(ali t.ali, bob t.bob)]
+ ?: (gth p.i.ali (lent p.i.bob))
+ [i.bob $(p.i.ali (sub p.i.ali (lent p.i.bob)), bob t.bob)]
+ =+ ^- [fic=(unce cord) ali=(urge cord) bob=(urge cord)]
+ (resolve ali bob)
+ [fic $(ali ali, bob bob)]
+ :: ~ :: here, alice is good for a while, but not for the whole
+ == :: length of bob's changes
+ ::
+ %|
+ ?- -.i.bob
+ %|
+ =+ ^- [fic=(unce cord) ali=(urge cord) bob=(urge cord)]
+ (resolve ali bob)
+ [fic $(ali ali, bob bob)]
+ ::
+ %&
+ ?: =(p.i.bob (lent p.i.ali))
+ [i.ali $(ali t.ali, bob t.bob)]
+ ?: (gth p.i.bob (lent p.i.ali))
+ [i.ali $(ali t.ali, p.i.bob (sub p.i.bob (lent p.i.ali)))]
+ =+ ^- [fic=(unce cord) ali=(urge cord) bob=(urge cord)]
+ (resolve ali bob)
+ [fic $(ali ali, bob bob)]
+ ==
+ ==
+ ::
+ ++ annotate :: annotate conflict
+ |= $: ali=(list ,@t)
+ bob=(list ,@t)
+ bas=(list ,@t)
+ ==
+ ^- (list ,@t)
+ %- zing
+ ^- (list (list ,@t))
+ %- flop
+ ^- (list (list ,@t))
+ :- :_ ~
+ %^ cat 3 '<<<<<<<<<<<<'
+ %^ cat 3 ' '
+ %^ cat 3 `@t`(scot %p -.bos)
+ %^ cat 3 '/'
+ +.bos
+ :- bob
+ :- ~['------------']
+ :- bas
+ :- ~['++++++++++++']
+ :- ali
+ :- :_ ~
+ %^ cat 3 '>>>>>>>>>>>>'
+ %^ cat 3 ' '
+ %^ cat 3 `@t`(scot %p -.als)
+ %^ cat 3 '/'
+ +.als
+ ~
+ ::
+ ++ clean :: clean
+ |= wig=(urge cord)
+ ^- (urge cord)
+ ?~ wig ~
+ ?~ t.wig wig
+ ?: ?=(%& -.i.wig)
+ ?: ?=(%& -.i.t.wig)
+ $(wig [[%& (add p.i.wig p.i.t.wig)] t.t.wig])
+ [i.wig $(wig t.wig)]
+ ?: ?=(%| -.i.t.wig)
+ $(wig [[%| (welp p.i.wig p.i.t.wig) (welp q.i.wig q.i.t.wig)] t.t.wig])
+ [i.wig $(wig t.wig)]
+ ::
+ ++ resolve
+ |= [ali=(urge cord) bob=(urge cord)]
+ ^- [fic=[%| p=(list cord) q=(list cord)] ali=(urge cord) bob=(urge cord)]
+ =- [[%| bac (annotate alc boc bac)] ali bob]
+ |- ^- $: $: bac=(list cord)
+ alc=(list cord)
+ boc=(list cord)
+ ==
+ ali=(urge cord)
+ bob=(urge cord)
+ ==
+ ?~ ali [[~ ~ ~] ali bob]
+ ?~ bob [[~ ~ ~] ali bob]
+ ?- -.i.ali
+ %&
+ ?- -.i.bob
+ %& [[~ ~ ~] ali bob] :: no conflict
+ %|
+ =+ lob=(lent p.i.bob)
+ ?: =(lob p.i.ali)
+ [[p.i.bob p.i.bob q.i.bob] t.ali t.bob]
+ ?: (lth lob p.i.ali)
+ [[p.i.bob p.i.bob q.i.bob] [[%& (sub p.i.ali lob)] t.ali] t.bob]
+ =+ wat=(scag (sub lob p.i.ali) p.i.bob)
+ =+ res=$(ali t.ali, bob [[%| (scag (sub lob p.i.ali) p.i.bob) ~] t.bob])
+ :* :* (welp bac.res wat)
+ (welp alc.res wat)
+ (welp boc.res q.i.bob)
+ ==
+ ali.res
+ bob.res
+ ==
+ ==
+ ::
+ %|
+ ?- -.i.bob
+ %&
+ =+ loa=(lent p.i.ali)
+ ?: =(loa p.i.bob)
+ [[p.i.ali q.i.ali p.i.ali] t.ali t.bob]
+ ?: (lth loa p.i.bob)
+ [[p.i.ali q.i.ali p.i.ali] t.ali [[%& (sub p.i.bob loa)] t.bob]]
+ =+ wat=(slag (sub loa p.i.bob) p.i.ali)
+ =+ res=$(ali [[%| (scag (sub loa p.i.bob) p.i.ali) ~] t.ali], bob t.bob)
+ :* :* (welp bac.res wat)
+ (welp alc.res q.i.ali)
+ (welp boc.res wat)
+ ==
+ ali.res
+ bob.res
+ ==
+ ::
+ %|
+ =+ loa=(lent p.i.ali)
+ =+ lob=(lent p.i.bob)
+ ?: =(loa lob)
+ [[p.i.ali q.i.ali q.i.bob] t.ali t.bob]
+ =+ ^= res
+ ?: (gth loa lob)
+ $(ali [[%| (scag (sub loa lob) p.i.ali) ~] t.ali], bob t.bob)
+ ~& [%scagging loa=loa pibob=p.i.bob slag=(scag loa p.i.bob)]
+ $(ali t.ali, bob [[%| (scag (sub lob loa) p.i.bob) ~] t.bob])
+ :* :* (welp bac.res ?:((gth loa lob) p.i.bob p.i.ali))
+ (welp alc.res q.i.ali)
+ (welp boc.res q.i.bob)
+ ==
+ ali.res
+ bob.res
+ ==
+ ==
+ ==
+ --
--
--