summaryrefslogtreecommitdiff
path: root/sys/src/cmd/git/test/lca.rc
blob: 7ca1da74119802fbd1c2c4c9589e8f36f2a7c318 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/rc

. util.rc

rm -fr scratch
mkdir -p scratch
cd scratch

echo @@ test lca @@
@{
	q $G/init a

	cd a

	echo 'first' > f
	q $G/add f
	q $G/commit -m base f
	r=`{$G/$O.query HEAD}

	echo 0 > f
	q $G/commit -m a.0 .
	a=`{$G/$O.query HEAD}

	for(i in `{seq 10}){
		echo $i > f
		q $G/commit -m a.$i .
	}

	q $G/branch -nb $r merge
	echo x > f
	q $G/commit -m b.0 .
	b=`{$G/$O.query HEAD}

	qq $G/merge front
	q $G/commit -m merge .
	m=`{$G/$O.query HEAD}

~ `{$G/$O.query $a $m @} $a || die lca a-m
~ `{$G/$O.query $a $b @} $r || die lca a-b
~ `{$G/$O.query $a $r @} $r || die lca a-r
}

#       a
#       ↓
# b→c→d→e→f
#
# date order (oldest to newest): f d c b e a
echo @@ test lca rebase @@
@{
	q $G/init b
	cd b

	touch f

	fn commit {
		$G/$O.save -n regress -e regress $* f
	}

	f=`{commit -m f -d 1}
	e=`{commit -m e -d 5 -p $f}
	d=`{commit -m d -d 2 -p $e}
	c=`{commit -m c -d 3 -p $d}
	b=`{commit -m b -d 4 -p $c}
	a=`{commit -m a -d 6 -p $e}

~ `{$G/$O.query $a $b @} $e || die lca a-b
~ `{$G/$O.query $b $a @} $e || die lca b-a
}