#! /bin/bash

WRKDIR="$(mktemp -d -p .)"
cd "${WRKDIR}"

git --version

git init . > /dev/null 2>&1
git config --global user.email "you@example.com" > /dev/null 2>&1
git config --global user.name "Your Name" > /dev/null 2>&1

touch .gitignore
git add .gitignore > /dev/null 2>&1
git commit -m'Init' > /dev/null 2>&1

echo 'a' > data.txt
git add data.txt > /dev/null 2>&1
git commit -m'First commit' > /dev/null 2>&1

echo 'b' > data.txt
git add data.txt > /dev/null 2>&1
git commit -m'Second commit' > /dev/null 2>&1

########################################################################

BASE='master'

BEFORE_BASE='master^'
#BEFORE_BASE='master~1'
#BEFORE_BASE='master@{1}'

echo "BASE: ${BASE}"
echo "BEFORE_BASE: ${BEFORE_BASE}"

########################################################################

BRANCH=branch_1
git checkout -b "${BRANCH}" "${BEFORE_BASE}" > /dev/null 2>&1

# Identical patches, same commits (as if --ff was given)
git cherry-pick "${BASE}" > /dev/null 2>&1

CID_BRANCH=$(git show "${BRANCH}" | awk 'NR == 1 {print $2}')
CID_MASTER=$(git show master | awk 'NR == 1 {print $2}')

# Should be different but aren't
echo "${CID_MASTER} <> ${CID_BRANCH}"
[ "${CID_MASTER}" = "${CID_BRANCH}" ] && echo SAME || echo DIFF

########################################################################

BRANCH=branch_2
git checkout -b "${BRANCH}" "${BEFORE_BASE}" > /dev/null 2>&1

# Identical patches but new commit IDs
git cherry-pick --no-ff "${BASE}" > /dev/null 2>&1

CID_BRANCH=$(git show "${BRANCH}" | awk 'NR == 1 {print $2}')
CID_MASTER=$(git show master | awk 'NR == 1 {print $2}')

# Those are different
echo "${CID_MASTER} <> ${CID_BRANCH}"
[ "${CID_MASTER}" = "${CID_BRANCH}" ] && echo SAME || echo DIFF

########################################################################

BRANCH=branch_3
git checkout -b "${BRANCH}" "${BEFORE_BASE}" > /dev/null 2>&1

# Identical patches, same commits
git cherry-pick --ff "${BASE}" > /dev/null 2>&1

CID_BRANCH=$(git show "${BRANCH}" | awk 'NR == 1 {print $2}')
CID_MASTER=$(git show master | awk 'NR == 1 {print $2}')

# Those are different
echo "${CID_MASTER} <> ${CID_BRANCH}"
[ "${CID_MASTER}" = "${CID_BRANCH}" ] && echo SAME || echo DIFF

########################################################################
