1
1
#! /usr/bin/env bash
2
2
set -eu -o pipefail
3
3
4
- function tick () {
4
+ function tick() {
5
5
if test -z " ${tick+set} "
6
6
then
7
7
tick=1112911993
@@ -13,9 +13,25 @@ function tick () {
13
13
export GIT_COMMITTER_DATE GIT_AUTHOR_DATE
14
14
}
15
15
16
- tick
17
- function commit() {
18
- local message=${1:? first argument is the commit message}
16
+ function force_tag() {
17
+ local name head_oid common_dir
18
+ name=${1:? argument the tag name}
19
+
20
+ # This should only be needed with 32-bit `git`, so fail otherwise.
21
+ word_size=" $(
22
+ git --version --build-options |
23
+ awk ' $1 == "sizeof-size_t:" { print $2 }'
24
+ ) "
25
+ (( word_size == 4 ))
26
+
27
+ # Manually create the tag.
28
+ head_oid=" $( git rev-parse HEAD) "
29
+ common_dir=" $( git rev-parse --git-common-dir) "
30
+ (set -o noclobber; echo " $head_oid " > " $common_dir /refs/tags/$name " )
31
+ }
32
+
33
+ function tagged_commit() {
34
+ local message=${1:? first argument is the commit message and tag name}
19
35
local date=${2:- }
20
36
local file=" $message .t"
21
37
echo " $1 " > " $file "
@@ -26,22 +42,24 @@ function commit() {
26
42
tick
27
43
fi
28
44
git commit -m " $message "
29
- git tag " $message "
45
+ git tag -- " $message " || force_tag " $message "
30
46
}
31
47
48
+ tick
49
+
32
50
# adapted from git/t/t5318 'lower layers have overflow chunk'
33
51
UNIX_EPOCH_ZERO=" @0 +0000"
34
52
FUTURE_DATE=" @4147483646 +0000"
35
53
36
54
git init
37
55
git config commitGraph.generationVersion 2
38
56
39
- commit future-1 " $FUTURE_DATE "
40
- commit old-1 " $UNIX_EPOCH_ZERO "
57
+ tagged_commit future-1 " $FUTURE_DATE "
58
+ tagged_commit old-1 " $UNIX_EPOCH_ZERO "
41
59
git commit-graph write --reachable
42
- commit future-2 " $FUTURE_DATE "
43
- commit old-2 " $UNIX_EPOCH_ZERO "
60
+ tagged_commit future-2 " $FUTURE_DATE "
61
+ tagged_commit old-2 " $UNIX_EPOCH_ZERO "
44
62
git commit-graph write --reachable --split=no-merge
45
- commit extra
63
+ tagged_commit extra
46
64
# this makes sure it's actually in chain format.
47
65
git commit-graph write --reachable --split=no-merge
0 commit comments