blob: fdea318fa6ba5d535bdf764510a8d77588b3fed6 (
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#!/usr/bin/perl
use strict;
use warnings;
# this is hardcoded; change it if needed
use lib "src/lib";
use Gitolite::Test;
# merge check -- the M flag
# ----------------------------------------------------------------------
try "plan 55";
confreset;confadd '
repo foo
RW+M = u1
RW+ = u2
RWM .= u3
RW = u4
';
try "ADMIN_PUSH set1; !/FATAL/" or die text();
# setup a merged push
try "
cd ..
[ -d foo ]; !ok
glt clone u1 file:///foo
ok; /Cloning into/
/You appear to have cloned an empty/
";
try "
cd foo; ok
[ -d .git ]; ok
test-commit aa; ok; /1 file changed, 1 insertion/
tag start; ok
glt push u1 origin master
ok; /new branch.*master.-..master/
/create.delete ignored.*merge-check/
checkout -b new; ok; /Switched to a new branch 'new'/
test-commit bb cc; ok
checkout master; ok; /Switched to branch 'master'/
test-commit dd ee; ok
git merge new; ok; /Merge made.*recursive/
test-commit ff; ok
tag end; ok
";
# push by u4 should fail
try "
glt push u4 file:///foo master
!ok; /WM refs/heads/master foo u4 DENIED by fallthru/
/To file:///foo/
/remote rejected.*hook declined/
/failed to push some refs/
";
# push by u3 should succeed
try "
glt push u3 file:///foo master
ok; /To file:///foo/; /master.-..master/
";
# rewind by u3 should fail
try "
reset-h start; ok; /HEAD is now at .* aa /
glt push u3 file:///foo +master
!ok; /rejected.*hook declined/
/failed to push some refs/
";
# rewind by u2 should succeed
try "
glt push u2 file:///foo +master
ok; /To file:///foo/
/forced update/
";
# push by u2 should fail
try "
reset-h end; ok; /HEAD is now at .* ff /
glt push u2 file:///foo master
!ok; /WM refs/heads/master foo u2 DENIED by fallthru/
/To file:///foo/
/remote rejected.*hook declined/
/failed to push some refs/
";
# push by u1 should succeed
try "
glt push u1 file:///foo master
ok; /master.-..master/
";
|