Files
lab-console-git-branching-2/src/tasks/task03_verify_linear_history.sh
T

13 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
repo="$(mktemp -d)"; trap 'rm -rf -- "$repo"' EXIT
git -C "$repo" init -q -b main; git -C "$repo" config user.name Student; git -C "$repo" config user.email student@example.invalid
printf 'color=blue\n' >"$repo/settings.txt"; git -C "$repo" add .; git -C "$repo" commit -q -m base
git -C "$repo" switch -q -c feature; printf 'color=green\n' >"$repo/settings.txt"; git -C "$repo" commit -qam 'feature purple'
git -C "$repo" switch -q main; printf 'color=red\n' >"$repo/settings.txt"; git -C "$repo" commit -qam 'main red'
git -C "$repo" switch -q feature; set +e; git -C "$repo" rebase main >/dev/null 2>&1; set -e
printf 'color=purple\n' >"$repo/settings.txt"; git -C "$repo" add settings.txt; GIT_EDITOR=true git -C "$repo" rebase --continue >/dev/null 2>&1
count="$(git -C "$repo" rev-list --count HEAD)"; merges="$(git -C "$repo" rev-list --merges --count HEAD)"; subjects="$(git -C "$repo" log --reverse --format=%s | paste -sd, -)"; status="$(git -C "$repo" status --porcelain)"
[[ "$count" -eq 3 && "$merges" -eq 0 && "$subjects" == 'base,main red,feature purple' && "$(cat "$repo/settings.txt")" == 'color=purple' && -z "$status" ]]
printf 'PASS task03 commits=3 merges=0 subjects="base,main red,feature purple" final=purple clean=1\n'