15
git init src &&
16
17
mkdir -p src/a/b/c &&
18
- mkdir -p src/d/e &&
18
+ mkdir -p src/d/f &&
19
20
for i in 1 2
21
do
26
echo "Version $i of file a/b/$n" > src/a/b/file.$n.txt &&
27
echo "Version $i of file a/b/c/$n" > src/a/b/c/file.$n.txt &&
28
echo "Version $i of file d/$n" > src/d/file.$n.txt &&
29
- echo "Version $i of file d/e/$n" > src/d/e/file.$n.txt &&
29
+ echo "Version $i of file d/f/$n" > src/d/f/file.$n.txt &&
30
git -C src add . &&
31
+ test_tick &&
32
git -C src commit -m "Iteration $n" || return 1
33
done
34
done
42
git -C srv.bare config --local uploadpack.allowanysha1inwant 1
43
'
44
45
+# Create a version of the repo with branches for testing revision
46
+# arguments like --all, --first-parent, and --since.
47
+#
48
+# main: 8 commits (linear) + merge of side branch
49
+# 48 original blobs + 4 side blobs = 52 blobs from main HEAD
50
+# side: 2 commits adding s/file.{1,2}.txt (v1, v2), merged into main
51
+# other: 1 commit adding o/file.{1,2}.txt (not merged)
52
+# 54 total blobs reachable from --all
53
+test_expect_success 'setup branched repo for revision tests' '
54
+ git clone src src-revs &&
55
+
56
+ # Side branch from tip of main with unique files
57
+ git -C src-revs checkout -b side HEAD &&
58
+ mkdir -p src-revs/s &&
59
+ echo "Side version 1 of file 1" >src-revs/s/file.1.txt &&
60
+ echo "Side version 1 of file 2" >src-revs/s/file.2.txt &&
61
+ test_tick &&
62
+ git -C src-revs add . &&
63
+ git -C src-revs commit -m "Side commit 1" &&
64
+
65
+ echo "Side version 2 of file 1" >src-revs/s/file.1.txt &&
66
+ echo "Side version 2 of file 2" >src-revs/s/file.2.txt &&
67
+ test_tick &&
68
+ git -C src-revs add . &&
69
+ git -C src-revs commit -m "Side commit 2" &&
70
+
71
+ # Merge side into main
72
+ git -C src-revs checkout main &&
73
+ test_tick &&
74
+ git -C src-revs merge side --no-ff -m "Merge side branch" &&
75
+
76
+ # Other branch (not merged) for --all testing
77
+ git -C src-revs checkout -b other main~1 &&
78
+ mkdir -p src-revs/o &&
79
+ echo "Other content 1" >src-revs/o/file.1.txt &&
80
+ echo "Other content 2" >src-revs/o/file.2.txt &&
81
+ test_tick &&
82
+ git -C src-revs add . &&
83
+ git -C src-revs commit -m "Other commit" &&
84
+
85
+ git -C src-revs checkout main &&
86
+
87
+ git clone --bare "file://$(pwd)/src-revs" srv-revs.bare &&
88
+ git -C srv-revs.bare config --local uploadpack.allowfilter 1 &&
89
+ git -C srv-revs.bare config --local uploadpack.allowanysha1inwant 1
90
+'
91
+
92
# do basic partial clone from "srv.bare"
93
test_expect_success 'do partial clone 1, backfill gets all objects' '
94
git clone --no-checkout --filter=blob:none \