hgmerge.com
76 lines
| 2.2 KiB
| application/x-msdownload
|
TextLexer
Jean-Francois Pieronne
|
r51894 | $! | ||
$! 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 | ||||