
Teach git-commit-graph to read commit graph files and summarize their contents. Use the read subcommand to verify the contents of a commit graph file in the tests. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
147 lines
3.0 KiB
Bash
Executable File
147 lines
3.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='commit graph'
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup full repo' '
|
|
mkdir full &&
|
|
cd "$TRASH_DIRECTORY/full" &&
|
|
git init &&
|
|
objdir=".git/objects"
|
|
'
|
|
|
|
test_expect_success 'write graph with no packs' '
|
|
cd "$TRASH_DIRECTORY/full" &&
|
|
git commit-graph write --object-dir . &&
|
|
test_path_is_file info/commit-graph
|
|
'
|
|
|
|
test_expect_success 'create commits and repack' '
|
|
cd "$TRASH_DIRECTORY/full" &&
|
|
for i in $(test_seq 3)
|
|
do
|
|
test_commit $i &&
|
|
git branch commits/$i
|
|
done &&
|
|
git repack
|
|
'
|
|
|
|
graph_read_expect() {
|
|
OPTIONAL=""
|
|
NUM_CHUNKS=3
|
|
if test ! -z $2
|
|
then
|
|
OPTIONAL=" $2"
|
|
NUM_CHUNKS=$((3 + $(echo "$2" | wc -w)))
|
|
fi
|
|
cat >expect <<- EOF
|
|
header: 43475048 1 1 $NUM_CHUNKS 0
|
|
num_commits: $1
|
|
chunks: oid_fanout oid_lookup commit_metadata$OPTIONAL
|
|
EOF
|
|
git commit-graph read >output &&
|
|
test_cmp expect output
|
|
}
|
|
|
|
test_expect_success 'write graph' '
|
|
cd "$TRASH_DIRECTORY/full" &&
|
|
graph1=$(git commit-graph write) &&
|
|
test_path_is_file $objdir/info/commit-graph &&
|
|
graph_read_expect "3"
|
|
'
|
|
|
|
test_expect_success 'Add more commits' '
|
|
cd "$TRASH_DIRECTORY/full" &&
|
|
git reset --hard commits/1 &&
|
|
for i in $(test_seq 4 5)
|
|
do
|
|
test_commit $i &&
|
|
git branch commits/$i
|
|
done &&
|
|
git reset --hard commits/2 &&
|
|
for i in $(test_seq 6 7)
|
|
do
|
|
test_commit $i &&
|
|
git branch commits/$i
|
|
done &&
|
|
git reset --hard commits/2 &&
|
|
git merge commits/4 &&
|
|
git branch merge/1 &&
|
|
git reset --hard commits/4 &&
|
|
git merge commits/6 &&
|
|
git branch merge/2 &&
|
|
git reset --hard commits/3 &&
|
|
git merge commits/5 commits/7 &&
|
|
git branch merge/3 &&
|
|
git repack
|
|
'
|
|
|
|
# Current graph structure:
|
|
#
|
|
# __M3___
|
|
# / | \
|
|
# 3 M1 5 M2 7
|
|
# |/ \|/ \|
|
|
# 2 4 6
|
|
# |___/____/
|
|
# 1
|
|
|
|
|
|
test_expect_success 'write graph with merges' '
|
|
cd "$TRASH_DIRECTORY/full" &&
|
|
git commit-graph write &&
|
|
test_path_is_file $objdir/info/commit-graph &&
|
|
graph_read_expect "10" "large_edges"
|
|
'
|
|
|
|
test_expect_success 'Add one more commit' '
|
|
cd "$TRASH_DIRECTORY/full" &&
|
|
test_commit 8 &&
|
|
git branch commits/8 &&
|
|
ls $objdir/pack | grep idx >existing-idx &&
|
|
git repack &&
|
|
ls $objdir/pack| grep idx | grep -v --file=existing-idx >new-idx
|
|
'
|
|
|
|
# Current graph structure:
|
|
#
|
|
# 8
|
|
# |
|
|
# __M3___
|
|
# / | \
|
|
# 3 M1 5 M2 7
|
|
# |/ \|/ \|
|
|
# 2 4 6
|
|
# |___/____/
|
|
# 1
|
|
|
|
test_expect_success 'write graph with new commit' '
|
|
cd "$TRASH_DIRECTORY/full" &&
|
|
git commit-graph write &&
|
|
test_path_is_file $objdir/info/commit-graph &&
|
|
graph_read_expect "11" "large_edges"
|
|
'
|
|
|
|
test_expect_success 'write graph with nothing new' '
|
|
cd "$TRASH_DIRECTORY/full" &&
|
|
git commit-graph write &&
|
|
test_path_is_file $objdir/info/commit-graph &&
|
|
graph_read_expect "11" "large_edges"
|
|
'
|
|
|
|
test_expect_success 'setup bare repo' '
|
|
cd "$TRASH_DIRECTORY" &&
|
|
git clone --bare --no-local full bare &&
|
|
cd bare &&
|
|
baredir="./objects"
|
|
'
|
|
|
|
test_expect_success 'write graph in bare repo' '
|
|
cd "$TRASH_DIRECTORY/bare" &&
|
|
git commit-graph write &&
|
|
test_path_is_file $baredir/info/commit-graph &&
|
|
graph_read_expect "11" "large_edges"
|
|
'
|
|
|
|
test_done
|