]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/git/merge
6e9791914eb0a124210d149adcce663640f45c2c
[plan9front.git] / sys / src / cmd / git / merge
1 #!/bin/rc -e
2 rfork ne
3 . /sys/lib/git/common.rc
4
5 fn merge{
6         ourbr=$gitfs/object/$1/tree
7         basebr=$gitfs/object/$2/tree
8         theirbr=$gitfs/object/$3/tree
9
10         all=`$nl{{git/query -c $1 $2; git/query -c $2 $3} | sed 's/^..//' | \
11                 subst -g '^('$ourbr'|'$basebr'|'$theirbr')/*' | sort | uniq}
12         for(f in $all){
13                 ours=$ourbr/$f
14                 base=$basebr/$f
15                 theirs=$theirbr/$f
16                 merge1 $f $theirs $base $ours
17         }
18 }
19
20 gitup
21
22 flagfmt=''; args='theirs'
23 eval `''{aux/getflags $*} || exec aux/usage
24
25 if(! ~ $#* 1)
26         exec aux/usage
27
28 theirs=`{git/query $1}
29 ours=`{git/query HEAD}
30 base=`{git/query $theirs ^ ' ' ^ $ours ^ '@'}
31
32 if(~ $base $theirs)
33         die 'nothing to merge, doofus'
34 if(! git/walk -q)
35         die 'dirty work tree, refusing to merge'
36 if(~ $base $ours){
37         >[1=2] echo 'fast forwarding...'
38         echo $theirs > .git/refs/`{git/branch}
39         git/revert .
40         exit ''
41 }
42 echo $ours >> .git/index9/merge-parents
43 echo $theirs >> .git/index9/merge-parents
44
45 merge $ours $base $theirs
46 >[1=2] echo 'merge complete: remember to commit'
47 exit ''