Annotation of 43BSD/contrib/rcs/src/merge, revision 1.1.1.1

1.1       root        1: #! /bin/sh
                      2: # Three-way file merge. 
                      3: # $Header: /usr/wft/RCS/SRC/RCS/merge,v 3.1 82/11/28 19:45:37 wft Exp $
                      4: # use: merge [-p] file1 file2 file3 [mark1 mark3]
                      5: # Effect: incorporates all changes that lead from file2 to file3 into file1.
                      6: # Result goes to std. output if -p is present, into file1 otherwise.
                      7: # Overlapping changes are delimited as follows:
                      8: # <<<<<<< file1
                      9: # lines in file1
                     10: # =======
                     11: # lines in file3
                     12: # >>>>>>> file3
                     13: # If mark1 and mark3 are given the delimiting lines <<<<.. and >>>>...
                     14: # contain mark1 and mark3 instead of the names of file1 and file3.
                     15: # A warning is printed if there are overlaps.
                     16: 
                     17: PATH=/bin:/usr/bin:.
                     18: DIFF3=/usr/lib/diff3
                     19: p=0
                     20: case $1 in
                     21: -p)
                     22:         p=$1
                     23:        shift;;
                     24: esac
                     25: 
                     26: 
                     27: if test $# -ge 3
                     28: then
                     29:         if test -f $1 -a -f $2 -a -f $3
                     30:         then
                     31:                 trap "rm -f /tmp/d3[abc]$$" 0 1 2 13 15
                     32:                 diff $1 $3 >/tmp/d3a$$
                     33:                 diff $2 $3 >/tmp/d3b$$
                     34:                 $DIFF3 -E /tmp/d3[ab]$$ $1 $2 $3 $4 $5 > /tmp/d3c$$
                     35:                 r=$?
                     36:                 if test $r != 0
                     37:                 then
                     38:                         echo Warning: $r overlaps during merge. 1>&2
                     39:                 fi
                     40:                 if test $p != 0
                     41:                 then
                     42:                         (cat /tmp/d3c$$; echo '1,$p') | ed - $1
                     43:                 else
                     44:                         (cat /tmp/d3c$$; echo w) | ed - $1
                     45:                 fi
                     46:                 exit 0
                     47:         else
                     48:                 echo "Cannot open $1, $2, or $3" 1>&2
                     49:         fi
                     50: fi
                     51: echo "usage: merge [-p] file1 file2 file3" 1>&2
                     52: exit 1

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.