|
|
$!
|
|
|
$! Custom merge tool to help solve merge conflict in OpenVMS
|
|
|
$! We recommand to solve this on other system
|
|
|
$!
|
|
|
$ set proc/par=extend
|
|
|
$ mine = p1
|
|
|
$ orig = p2
|
|
|
$ theirs = p3
|
|
|
$ tovms :== $ MERCURIAL_ROOT:[vms]tovms
|
|
|
$ merged = p1 + ".hgmerge"
|
|
|
$ tovms 'merged'
|
|
|
$ merged = tmpfn
|
|
|
$
|
|
|
$ define DECC$UNIX_LEVEL 90
|
|
|
$ gdiff3 :== $ MERCURIAL_ROOT:[vms]gdiff3
|
|
|
$ gdiff == "$ MERCURIAL_ROOT:[VMS]gdiff"
|
|
|
$! gdiff -u 'orig' 'mine'
|
|
|
$! gdiff -u 'orig' 'theirs'
|
|
|
$ if (f$search("''merged'") .nes. "") then -
|
|
|
delete 'merged';*
|
|
|
$ define sys$output 'merged'
|
|
|
$ gdiff3 -"L" mine -"L" original -"L" theirs -"E" -m 'mine' 'orig' 'theirs'
|
|
|
$ status = $status
|
|
|
$ deassign sys$output
|
|
|
$ convert/fdl=mercurial_root:[vms]stmlf.fdl 'merged' 'merged'
|
|
|
$ purge/nolog 'merged'
|
|
|
$! No conflicts found. Merge done.
|
|
|
$ if status .eqs. "%X006C8009"
|
|
|
$ then
|
|
|
$ tovms 'p1'
|
|
|
$ mine = tmpfn
|
|
|
$ rename 'merged' 'mine'
|
|
|
$ purge/nolog 'mine'
|
|
|
$ write sys$output "Merged ''mine'"
|
|
|
$ exit 1
|
|
|
$ endif
|
|
|
$
|
|
|
$! In all other cases, diff3 has found conflicts, added the proper conflict
|
|
|
$! markers to the merged file and we should now edit this file. Fire up an
|
|
|
$! editor with the merged file and let the user manually resolve the conflicts.
|
|
|
$! When the editor exits successfully, there should be no conflict markers in
|
|
|
$! the merged file, otherwise we consider this merge failed.
|
|
|
$
|
|
|
$ if status .eqs. "%X006C8013"
|
|
|
$ then
|
|
|
$ deassign sys$input
|
|
|
$ edit 'merged'
|
|
|
$ open fi 'merged'
|
|
|
$ loop:
|
|
|
$ read fi srec/end=endloop
|
|
|
$ rec7 = f$extract(0, 7, srec)
|
|
|
$ if rec7 .eqs. "<<<<<<<" then goto conflict
|
|
|
$ if rec7 .eqs. "|||||||" then goto conflict
|
|
|
$ if rec7 .eqs. "=======" then goto conflict
|
|
|
$ if rec7 .eqs. ">>>>>>>" then goto conflict
|
|
|
$ goto loop
|
|
|
$ endloop:
|
|
|
$ close fi
|
|
|
$ tovms 'p1'
|
|
|
$ mine = tmpfn
|
|
|
$ rename 'merged' 'mine'
|
|
|
$ purge/nolog 'mine'
|
|
|
$ exit
|
|
|
$ endif
|
|
|
$ if (f$search("''merged'") .nes. "") then -
|
|
|
delete 'merged';*
|
|
|
$ write sys$output "serious diff3 error, while trying to merge ''mine'"
|
|
|
$ exit 44
|
|
|
$
|
|
|
$ conflict:
|
|
|
$ close fi
|
|
|
$ if (f$search("''merged'") .nes. "") then -
|
|
|
delete 'merged';*
|
|
|
$ write sys$output -
|
|
|
"conflict markers still found in the working-copy. Merge aborted for ''mine'"
|
|
|
$ exit 44
|
|
|
|